调用同一承诺第二次返回两个响应(第一个呼叫和第二个呼叫响应)

时间:2017-07-24 11:59:37

标签: javascript promise

在下面的代码中,如果第一个请求失败并且第二个请求给出响应,则cp在promise中同时具有失败和成功响应。我只需要成功的回应。

cp = getcp() // getcp returns promises
cp.catch(ex => {
  if (ex) {
    cp = getcp()
    cp.catch(ex => {
      cp = {}
    })
 } else {
    cp = {}
 }
})

我试过,解决但没有用。请帮助我获得成功回复。提前谢谢。

1 个答案:

答案 0 :(得分:0)

你的链应该是这样的:

getcp()
  .catch(ex => {
      if (ex) {
          return getcp();  // return new promise which may get caught
      } else {
          return {};  // return "success" value
      }
  })
  .catch(() => ({}))  // catch failure of second attempt
  .then(res => console.log('result is', res));  // use final result

您永远不会覆盖promise对象,而是构建一系列失败处理程序和返回成功值的函数。