【发布时间】:2019-12-25 09:55:15
【问题描述】:
以下代码:
let promise = new Promise(function(resolve, reject) {
console.log("resolve, reject are", resolve, reject);
resolve("this is the success data");
console.log("Point A");
setTimeout(function() { console.log("Point B"); }, 0);
});
promise.then(
function(a) {
console.log("Success.", a);
setTimeout(function() { console.log("Point C"); }, 0);
promise.then(function(a) { console.log("Go have a drink.", a); });
},
function(a) {
console.log("failure", a)
}
);
console.log("Point D");
将“Point B”和“Point C”的打印添加到作业队列中,然后打印出“Go have a drink”的处理程序也添加到作业队列中。但是在 Node 和 Google Chrome 的结果中,“去喝一杯”打印在“点 B”和“点 C”之前。是不是promise有一个单独的job queue,setTimeout和setInterval有一个单独的job queue,promise job queue是在timed job queue之前执行的? It seems the ES6 specs mentioned two job queues: ScriptJobs and PromiseJobs。我们可以指望在定时作业队列之前执行的承诺作业队列吗?
【问题讨论】:
标签: javascript ecmascript-6 promise settimeout job-queue