首页 > 解决方案 > 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);

标签: javascriptfiledirectorycallback

解决方案


你必须等待你的功能完成让我解释一下承诺


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 的更多信息,请转到此处


推荐阅读