Выполните код ниже, получите: c,a,d,b
// case 1
const test = async () => {
new Promise((resolve) => {
resolve('a');
}).then(r => console.log(r));
process.nextTick(() => {
console.log('c');
});
console.log(await 'd');
return 'b';
};
(async () => {
const r = await test();
console.log(r);
})();
но, если я поставлю process.nextTick ниже await 'd'
// case 2
const test = async () => {
new Promise((resolve) => {
resolve('a');
}).then(r => console.log(r));
console.log(await 'd');
process.nextTick(() => {
console.log('c');
});
new Promise((resolve) => {
resolve('e');
}).then(r => console.log(r));
return 'b';
};
(async () => {
const r = await test();
console.log(r);
})();
Я получаю: a,d,e,b,c
почему порядок выполнения process.nextTick изменяется так?
Согласно моему ограниченному знанию, nextTick
выполняется до Promise.resolve()
, как показано в case1
, поэтому я ожидал получить a,d,c,e,b
вместо a,d,e,b,c
в case2