【问题标题】:handling multiple http call and multiple response处理多个 http 调用和多个响应
【发布时间】:2018-12-27 06:04:55
【问题描述】:

我有一个包含多个键值对的对象,每个键值对都需要作为请求发送,显然我会有多个响应,其中一些是成功的,其中一些是错误的。现在如何处理它们,因为我必须处理部分成功和失败的情况:

requestParams = {0:'value1',1:'value2',2:'value3'}

现在requestParams里面的每个值都需要发送一个http请求,相应的响应需要正确处理。

我想要

for(i=0;i<requestParams.length;i++){
     http.get(url,requestParams[i]).then(resolve,reject)

对于成功和拒绝都需要显示一些警报,那么我该如何处理呢?谢谢。

【问题讨论】:

    标签: javascript node.js ajax http promise


    【解决方案1】:

    您需要使用Promise.all 来处理一组promise。问题是单个故障将导致Promise.all 失败。您可以在来自http.get() 的各个承诺上放置catch() 并将某些内容返回到流中。由于catch() 返回一个新的未拒绝的承诺,Promise.all 不知道有一个失败。然后,您可以对其进行过滤以查找个别错误。

    例如,这是一个失败的假 http.get

    // Faked HTTP object
    let http = {
      get(url) { // will fail for 'value2'
        return url == 'value2' ? Promise.reject("some error for: " + url) : Promise.resolve("some value for: " + url)
      }
    }
    
    let arr = ['value1', 'value2', 'value3']
    let promises = arr.map(item =>
      http.get(item)
      .catch(e => "ERROR: " + e) // catch error here, returning a value or error to be processed later
    )
    Promise.all(promises).then(console.log)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多