如何按顺序记录多个函数的返回

How to log return of multiple functions in order?

本文关键字:函数 返回 何按 顺序 记录      更新时间:2024-03-14

我有一个独立函数数组。有些人需要比其他人更长的时间才能回来。

var functionArray = [
    function() {function1()},
    function() {function2()},
    ...
];

我从一个for循环给他们打电话:

for(var i = 0; i < functionArray.length; i++) {
    functionArray[i]();
}

我在我的应用程序中有一个文本字段,我将其用作控制台,我想首先记录功能1、2秒等的结果。

有没有一种方法可以在没有回调的情况下做到这一点?回调将使每个函数依赖于前一个函数的成功。

我想我可以在函数1()的successCallback和errorCallback中运行函数2(),但有更好的方法吗?

如果这些函数是异步的(我从描述中假设),那么使用promise和Promise.all将是最有意义的:

Promise.all(functionArray).then(function (results) {
    for (var i = 0; i < results.length; i++) {
        console.log(results[i]);
    }
});

请注意,您需要调整您的功能以使用promise;要么将它们分别封装在Promise中,并让它们适当地调用resolve回调,要么函数本身需要返回Promise

闭包函数可以是:

for (var i = 0; i < functionArray.length; i++) {
    (function(x) {
        functionArray[i]();
        console.log(x);
    })(i);
}