<分区>
我有一个我无法理解的 Unresolved JS 行为。
我在 node v8.4.0
上运行这段代码。
我运行这段代码两次。
第一次使用 f1()
第二次使用 f2()
f2()
结果符合预期。先打印“开始”,然后打印“结束”。
f1()
结果不符合预期。先打印“end”,然后打印“start”。
有人可以向我解释下面代码的结果吗?
const fs = require('fs')
function f1() { return new Promise((resolve, reject) => { resolve() }) }
function f2() {
return new Promise((resolve, reject) => {
fs.readFile('/Users/adi/Downloads/profile.jpg', resolve)
})
}
async function main() {
setImmediate(() => { console.log('start') })
await f1()
console.log('end')
}
main()
//f1 output:
end
start
//f2 output:
start
end
据我所知,结果应该是“开始”然后是“结束”。 我错过了什么?