javascript - 返回 promise 的 promise

标签 javascript jquery promise

我嵌套了一个 Promise,其中一个函数调用另一个函数并且两个函数都返回 Promise。函数 b 正在调用函数 a,当函数 a 的 Promise 完成时,函数 b 解析其自己的延迟并传递 a 的结果及其自己的结果。

function a(){
  var d =  $.Deferred();
  makeSomeAsyncCall(function(){
    d.resolve('a')
  })
  return d.promise();
}

function b(){
  var d =  $.Deferred();
  a= a()

  a.done(function(a){d.resolve(a, 'b')})
   .fail(function(a){d.reject(a, 'b')})

  return d.promise();

}

b().done(function(a, b){console.log(a, b)})
 .fail(function(a, b){console.log(a, b)})

我想知道是否有办法在不创建延迟函数的情况下解决这个问题 b

最佳答案

I wonder if there is way to wright this without creating a deferred in function b

是的,有。链接两个(可能异步)函数是 main promise 的唯一目的方法,then (在旧版本中称为pipe)。简单写一下

function b() {
    return a().then(function success(aresult) {
        return [aresult, "b"];
    }, function error(aerror) {
        return $.Deferred().reject(aerror, "b");
    });
}

我不确定您是否真的需要该error处理程序,如果您不指定它,那么aerror将自动传播。

关于javascript - 返回 promise 的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19939025/

相关文章:

javascript - 在点击位置创建弹出窗口

javascript - 如何使用 jQuery 和 MaterializeCSS 让我的图标切换?

php - 需要一些关于 jQuery AJAX 请求的帮助,将 PHP 文档加载到 DIV 容器中

node.js - 使用 Promise 在 Node.js 中将多个 svg 字符串流式传输到 png

javascript - typescript promise 数组在一种情况下正确解决但在另一种情况下不正确

javascript - 如何使用html将变量传递给javascript

javascript - knockout 不更新输入值随日期选择器更改

javascript - 如何使用 JSDoc 记录函数

javascript - Jquery 自动完成结果链接在点击时不起作用

node.js - 错误 : Cannot set headers after they are sent to the client (with next)