Java与JS的区别:同步与异步
发布时间 :
字数:273
阅读 :
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);
});