ノード vm で非同期関数を呼び出す次のノード コードを考えてみましょう。
const vm = require('vm');
const ctx = new vm.createContext({
console: console,
foo: function(){
return new Promise(r => {console.log(2); r()})
}
})
console.log("START");
const script = "async function main(){ console.log(1); await foo(); console.log(3); }";
new vm.Script(script).runInContext(ctx);
new vm.Script("main()").runInContext(ctx);
console.log("END");
コードの出力は次のとおりです。1、2、END、3
async main()
出力が 1、2、3、END になるように、「END」が発生する前に関数が自然に終了したことを確認するにはどうすればよいですか?