循环中的Javascript回调函数

时间:2016-08-10 16:17:17

标签: javascript loops callback

我在Javascript中有3个功能。 function1将数据插入array-array_message',function2导出' array_message'进入csv文件。 function3将这两个函数与列表中的所有元素一起调用。

在Javascript中,function2与function1同时执行,这使得导出的文件始终为空,因为没有时间填写' array_message'。

当在这个'中完成function1时,任何人都可以帮助调用function2吗?环?也许另一个回调函数?

 function function3(){
      for (var i=0; i<list.length;i++){
        console.log(list[i]);
        function1(list[i])
        function2(list[i]+'.csv',array_message)
      }
     }

1 个答案:

答案 0 :(得分:2)

您可以利用Promises(首选IMO)或回调来完成此任务:

function function1(item) {
    return new Promise(function(resolve, reject) {
        // do operations
        if (operationSuccessful) {
            resolve(dataFromOperation);
        } else {
            reject(errorFromOperation);
        }
    });
}

function function3() {
    for (var i=0; i<list.length;i++) {
        // only call function2 after function1 is complete
        function1(item[i]).then(function(responseData) {
            function2(responseData);
        }).catch(function(error) {
            console.error("Problem in function1")
        });
    }
}