小编Fil*_*off的帖子

循环中的javascript承诺或如何逐个调用函数

我和slimerjs一起工作.所以我有一个带有url和function(foo)的数组,用一个url创建一个东西.这个函数返回Promise.

如果我做这样的事情就没关系:

 foo(urls).then(foo, orError).then(foo, orError).....
Run Code Online (Sandbox Code Playgroud)

但是我想在循环中调用foo(),所以我试试这个:

for ( var i = 0; i < urls.length; i++ ) { foo(urls).then(foo, error); }
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

也许我不需要承诺,我不知道.

如何在循环中调用异步函数,但等到函数完成?

这是我的"foo"功能:

function visitPage(urls) {
    return new Promise(function(success, error) {
        var url = urls.shift();
        if (!url) error();
        logger.log("Opening " + url);
        page
            .open(url)
            .then(function(status) {
                if (status !== "success") error();
                return page.evaluate(function() {
                    return document.body.innerHTML;
                });
            }).then(function(body) {
                var founded = looker.lookForAlpari(body);
                logger.log(founded);
                page.close();
                success(urls);
            });
    });
}
Run Code Online (Sandbox Code Playgroud)

这是我的循环

for ( var i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

javascript loops asynchronous promise

2
推荐指数
1
解决办法
3288
查看次数

标签 统计

asynchronous ×1

javascript ×1

loops ×1

promise ×1