Java与JS的区别:同步与异步

  1. Java 的默认同步阻塞
  2. JavaScript/Node.js 的默认异步非阻塞

Java 的默认同步阻塞

// Java 代码 - 默认就是同步阻塞
public Result add(Params params) {
    // 这行代码会阻塞当前线程,直到数据库操作完成
    DbResult dbResult = database.collection("articles").add(params);
    
    // 只有等上面的数据库操作完成后,才能执行到这里
    System.out.println("数据库操作完成");
    
    return processResult(dbResult);
}

// 调用时也是同步的
Result res = add(params);  // 程序会停在这里等待
System.out.println("继续执行");  // 等 add 完成后才会执行

JavaScript/Node.js 的默认异步非阻塞

// JavaScript 代码 - 默认就是异步非阻塞
function add(params) {
    // 这行代码不会阻塞,而是立即返回一个 Promise
    let dbPromise = database.collection("articles").add(params);
    
    // 这行代码会立即执行,不会等待数据库操作
    console.log("这行代码会先执行!");
    
    return dbPromise;  // 返回的是 Promise
}

// 调用时
let promise = add(params);  // 立即返回,不等待
console.log("这行代码会先执行!");  // 先打印

// 需要手动处理异步结果
promise.then(res => {
    console.log("数据库操作完成", res);
});

×

喜欢就点赞,疼爱就打赏