如何在if-else语句中处理异步回调?

伊娃

对于一个项目,我需要更改五个if语句中一个接一个地执行的文件中的某些值,在完成所有这些操作之后,我需要保存该文件。更改之一包含异步保存映像功能。我遇到的问题是,到程序写入文件时,该功能尚未完成。我应该如何处理if语句中的回调?保存图像功能应在程序进入下一个if语句之前执行。

if(criterium1){... //Alter file}

if(criterium2){
    saveImage(searchValue, folder,callback(error)){
        ... //Alter file
    }
if(criterium3){... //Alter file}

fs.writeFile(opfFile, xml, function(error) {
    callback(null);
 });

 var saveImage = function(searchValue, folder, callback){
    var images = require ('google-images2');
    images.search(searchValue, function(error, image){
        callback(null);
    });
 };

谁能给我任何有关如何处理此问题的指示?谢谢!亲切的问候,伊娃

超越性

您可以使用异步库,特别是它的series控制流。https://caolan.github.io/async/docs.html#series

您想将if语句作为数组中的任务执行(第一个参数)。完成异步操作后,请确保调用回调。第二个参数是将在完成所有任务后执行的回调。

async.series([
    function(callback){
        if(criterium1) {
          //Alter file
          // make sure to call the callback
        } else {
          callback(null, null);
        }
    },
    function(callback){
        if(criterium2) {
          //Alter file
          // make sure to call the callback
          // looks like you can just pass callback into the saveImage function
        } else {
          callback(null, null);
        }
    }
], function () {
  fs.writeFile(opfFile, xml, function(error) {
    callback(null);
 });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章