【发布时间】:2020-12-25 21:12:30
【问题描述】:
我在服务器上有以下代码:
let tmpFileName;
// GET
app.get('/clicked', async (req, res) => {
let nullOutput = writeTmpFile("hello, world!");
await deleteTmpFile();
console.log("Hurray, finished!");
res.send({result:nullOutput});
})
function writeTmpFile(content){
tmpFileName = "tmp" + Math.random().toString() + "tsl";
return new Promise(resolve => {
fs.writeFile(tmpFileName, content, function (err) {
if (err) throw err;
console.log('Temp file creation successful.');
});
})
}
function deleteTmpFile(spec){
return new Promise(resolve => {
fs.unlink(tmpFileName, function (err) {
if (err) throw err;
console.log('Temp file deletion successful.');
});
})
}
但是,在我的控制台输出中,我只得到
Temp file creation successful.
Temp file deletion successful.
但是,如果我删除await deleteTempFile(),那么Hurray, finished! 会出现在控制台上。
更一般地说,我如何调试这些问题模式? 为什么会这样?
【问题讨论】:
-
你永远不会
resolve你的承诺。
标签: javascript node.js promise async-await