Ale*_*lex 0 asynchronous node.js
我正在创建一个带有 Lambda 函数的 Excel 文件,该文件稍后通过电子邮件发送。Excel之前填充数据,然后像这样存储(使用excel4node nom包):
console.log("Before print");
var test2 = await workbook.write(path, function(err, stats) {
console.log("Excel written");
if (err) {
console.error(err);
} else {
console.log(stats); // Prints out an instance of a node.js fs.Stats object
}
});
console.log("After print");
Run Code Online (Sandbox Code Playgroud)
该代码有时有效。问题是下面的代码没有等到写好excel并且电子邮件找不到附件。
如何让我的 Lambda 函数等到 excel 写入磁盘?
await仅适用于返回在底层异步操作完成时解析的承诺的函数。由于您将完成样式的回调传递给函数,因此它可能不会返回这样的承诺。
如果你使用的库不直接支持promise,那么你可以自己promisify这个函数。
const util = require('util');
workbook.writeP = util.promisify(workbook.write);
async function someFunc() {
try {
let result = await workbook.writeP(path);
console.log(result);
// do something here that runs after the .write operation is done
} catch(e) {
console.log(e);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |