这里我写了3个console.log()。请帮助我,为什么在setTimeout之前执行Promise,即使它有0秒的延迟。据我所知,setTimeout和Promise都是在webAPI中执行的,而不是在JavaScript引擎中。这件事跟priorty有关系吗?
setTimeout(()=>console.log("SET TIME OUT"),0); // #1
var promise = new Promise((resolve,reject)=>{
resolve()
})
promise
.then(()=>console.l
从的文档中可以看出:
* Creates a future containing the result of calling [computation]
* asynchronously with [scheduleMicrotask].
的文档声明:
* Creates a future containing the result of calling [computation]
* asynchronously with [Timer.run].
我想知道,它们对编码有什么样的影响,我们什么时候应该使用这种或那种?
我读了很多关于承诺的文章。我知道承诺执行是任务队列的微任务,异步代码执行是任务队列的任务。在保证异步代码工作后同步代码(即在一些获取之后,我们可以在.then块中编写同步代码),这种情况是如何发生的?我猜想承诺中的所有代码都使用调用堆栈(如果在允诺体内同步代码)或任务队列(如果承诺体内有异步代码)。我看到了许多使用setTimeout代码的调用堆栈、Web和任务队列的示例,但是它如何与我只能承担的承诺一起工作。请在我的示例中显示调用堆栈、Web和任务队列发生了什么吗?
第一个示例:
const promiseWithAsyncBody = new Promise(resolve=>
s