nodejsタイマーとpromiseの実行順序
5603 ワード
var wait = function (ms) {
return new Promise((resolve) => {
console.log("promise"); //promise ,
setTimeout(() => {
console.log("resolve"); //
resolve();
}, ms);
});
};
Promise.resolve().then(() => {
console.log("mocro"); //
});
setTimeout(() => {
console.log("timeout"); //
}, 0);
var delayPrint = async function (ms) {
console.log("begin");
await wait(ms);
console.log("print");
};
delayPrint(0);
//出力順序/begin/promise/mocro/timeout/resove/printnodejsは単一スレッド非同期ブロックタスクで、ここではシングルパスはユーザのメインスレッドを指し、メインスレッドは時間循環キューに合わせてプログラムを実行します.
メインスレッドは、ユーザ同期コードを実行し、タイマーが発生したときにイベントキューにタイマータスクを置き、プロミセに会ったら関数をマイクロタスクキューに配置する.メインスレッドが同期コードを実行した後、マイクロタスクがあるかどうかを確認し、実行されている場合はマクロタスクを確認し、ある場合は実行します.マイクロタスクでタイマータスクを作成すると、マクロ人物にも挿入されます.
注意したいのは: