然后注册的函数是否可以像承诺构造函数一样获得自己的解析方法



then方法注册/执行的函数是否能够抓住自己的解析?

当承诺的构造能够注入其解析方法时,如下所示:

new Promise(function(resolve, reject){ async(resolve();})

但是,那时注册的操作通常是在解析方法中触发的,例如(至少在我见过的一些示例中):

resolve = function(value){
  self.value = value;
  self.state = "resolved";
  deferred.resolve(deferred.transform(self.value));
}

没有真正的方法可以将deferred.resolve注入deferred.transform方法中。几乎就像then不希望它执行的函数是异步的,不像承诺构造函数那样,因此它不是同构的?

在 Javascript Promise Sequence 中,您实际上为一项理想情况下应该在 4 个承诺中完成的工作创建了 8 个承诺。如果then注册的变换函数可以掌握自己的resolve哪个是deferred.resolve,这不能解决这个问题吗?变换函数可以是同步的,并且可以在完成后resolve它。

由 then 方法注册/执行的函数是否能够抓住自己的解析?

不。

或者至少不返回拦截其回调的 thenable,但这并没有真正的意义。

这几乎就像 then 不希望它执行的函数是异步的

哦,确实如此。您的误解似乎是基于认为异步函数是接受回调的函数。他们不是。异步函数是那些返回承诺的函数!then完全有能力对付他们。

。与承诺构造函数不同

反之亦然。Promise构造函数是这里的奇怪构造函数。它的唯一目的是将旧式的回调函数转换为 promise。你只应该处理这些天完全有承诺的函数,新的API将立即返回承诺。

相关内容

最新更新