以下代码:
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");
将“点 B”和“点 C”的打印添加到作业队列中,之后,打印出“去喝一杯”的处理程序也添加到作业队列中。但是在 Node 和 Google Chrome 的结果中,“去喝一杯”在“点 B”和“点 C”之前打印。是不是promise有单独的job queue和setTimeout
andsetInterval
有单独的job queue,promise job queue是在timed job queue之前执行的?似乎 ES6 规范提到了两个作业队列: ScriptJobs 和 PromiseJobs。我们可以指望在定时作业队列之前执行的承诺作业队列吗?