javascript - Javascript 在继续尝试回调和承诺之前不等待处理
问题描述
我看过一堆 Promise 教程和回调教程,我想我只是没有得到任何东西。我下面的代码读取目录中的所有文件并处理这些文件。当它结束时,我需要它来调用 writeToFile() .. 但是 writeToFile 在处理完成之前会调用。我希望这篇文章最终可以结束我的困惑。谢谢你。下面的代码:
function go(callbackFunction){
var fs = require('fs');
fs.readdir('./filesToProcess', (err, files) => {
for (var i = 0; i < files.length; i++) {
//console.log("run the process on : " + files[i]);
console.log("Processing: " + files[i] + "\n");
processFile('./filesToProcess/' + files[i]);
};
});
callbackFunction();
}
go(writeToFile);
解决方案
你必须等待你的功能完成让我解释一下承诺
const foo = async () =>{ /* some function that takes time */}
// If I call foo like this "as you did inside the go function"
foo()
console.log("After foo")
//The console.log will print before the foo execute because you didn't wait for it
//The correct way is
await foo()
console.log("After foo")
//or
foo().then(() => console.log("After foo") )
要了解有关如何使用 Promise 的更多信息,请转到此处
推荐阅读
- c# - 在实体框架中记录查询
- c++ - if (itr != container.end() ) 未能捕捉到结束元素
- html - 使用 XSLT 获取 XML 属性以获取 HTML 上的 href
- jquery - 从类中找到最近的元素
- node.js - 如何使用 node.js 在 firebase 中存储文件
- function - 如何在带有信号 vhdl 的函数中使用 after
- php - 将文件保存到 scaleway 存储 php 方法
- jquery - jQuery 扩展函数将 jQuery 堆栈返回到调用函数之前的状态
- php - 我只想在数据库中发布日期,但我想在同一列中获取数据库中的日期和当前时间
- javascript - 将图像从桌面导入 JavaScript 代码的简单方法?