Yov*_*var 5 javascript race-condition es6-promise
是否可以在承诺解析和承诺等待返回之间执行用户代码?
function a () {
return new Promise(resolve => {
setTimeout(() => {
// Between here...
resolve()
}, 1000))
}
}
async function b () {
await a()
// ...and here ?
}
Run Code Online (Sandbox Code Playgroud)
规范是否强制要求立即调用Promise回调?我想知道虚拟机是否可以在两点之间处理事件,从而可能产生副作用。
不,它不强制立即调用。 规范在兑现承诺时需要执行多个步骤,其中之一是:
- 执行EnqueueJob(“ PromiseJobs”,PromiseResolveThenableJob,“?promise,解决方案,然后是Action”)
请注意,根据承诺的状态,可以采用不同的路线。但是,它们都以EnqueueJob结尾,它表示:
- 在由queueName命名的作业队列的后面添加待处理。
因此,任何进一步的执行都将延迟到作业队列的末尾。