【发布时间】:2021-10-03 22:20:36
【问题描述】:
我正在学习 Javascript 异步编程和 Promise。我有以下代码。
let promiseTest = () => new Promise((resolve, reject) => {
console.log("Inside Promise");
resolve('Promise is resolved');
});
console.log("Before Promise");
promiseTest().then((data) => { console.log(data); });
console.log("After Promise");
我有函数“promiseTest”。我想异步执行。在现实世界的场景中,它可能是一个获取 Web 服务或查询数据库的函数。我期望从代码中得到以下结果。
Before Promise
After Promise
Inside Promise
Promise is resolved
我期待“console.log(" Inside Promise") ”将异步执行,因为它位于 Promise 函数中。但实际结果是
Before Promise
Inside Promise
After Promise
Promise is resolved
正如你看到的实际结果,Inside Promise 是同步执行的,并且阻塞了主线程。只有“resolve”中的代码是异步的。也许,我目前对 javascript Promise 的理解是不正确的。如何修改现有代码以确保整个函数“promiseTest”异步执行而不会阻塞主线程。
【问题讨论】:
-
注意,即使是延迟的部分也会阻塞主线程。不阻塞主线程的唯一方法是使用其他线程。
标签: javascript asynchronous es6-promise