javascript - 是否有可能在 Q.All 中一次返回所有 "failures"

标签 javascript node.js promise q

本质上,我有大量的对象要在其上测试网站。我使用下划线将 URL 转换为 HTTP 请求的 promise 数组。一旦失败,链条就会结束(我预料到了这一点)。有没有可能把所有的失败都收集起来,返回给Fail函数呢?还是我必须使用 allSettled 来编写然后解析它?

var Q = require('q')
var _ = require('underscore')
var JSON = require('JSON')
var FS = require("q-io/fs");
var HTTP = require("q-io/http");


FS.read('members.json').then(function(memberJson){
    return JSON.parse(memberJson)
}).then(function(memberObjects){
    var httpCheckPromises = _.
        chain(memberObjects).
        first(100).
        filter(function(member){
            return member.website.toLowerCase().indexOf('www') >= 0
        }).
        map(function(member){
            return HTTP.read(member.website)
        }).
        value()

    return Q.all(httpCheckPromises)
}).then(function(goodRequests){
    console.log(goodRequests)
}).fail(function(badRequests){
    console.log('bad')
    console.log(badRequests)
})

最佳答案

Am I going to have to write this using allSettled and then parse that?

是的,如果您不想在第一次失败的请求时中止。

FS.read('members.json')
.then(JSON.parse)
.then(function(memberObjects){
    var httpCheckPromises = _.chain(memberObjects)
        .first(100)
        .pluck("website")
        .filter(function(website){
            return website.toLowerCase().indexOf('www') >= 0;
        })
        .map(HTTP.read)
        .value();
    return Q.allSettled(httpCheckPromises);
}).then(function(requests) {
    var goodRequests = _.chain(requests)
        .where({state:"fulfilled"})
        .pluck("value")
        .value(),
    badRequests = _.chain(requests)
        .where({state:"rejected"})
        .pluck("reason")
        .value();
    console.log("good:", goodRequests);
    console.log("bad:", badRequests);
});

关于javascript - 是否有可能在 Q.All 中一次返回所有 "failures",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22484247/

相关文章:

javascript - NodeJS 初学者问题。 "Create a download for a user"并避免多个相同的服务器调用

node.js - Express 中的 app.get() 函数参数问题

javascript - 在 Protractor 中传播 promise

javascript - catch block 中的 resolve 未定义

javascript - 来自表单提交的数据与来自 Ajax 的数据

javascript - 追加<th>的innerhtml

javascript - 向下滚动时显示/删除类(class)

javascript - parseInt 应该是数字时返回 NaN?

node.js - Nodejs 和 Streams - 详细概述?

jquery - 使用 RESTful Webservice 完成 Monaco 编辑器代码