【问题标题】:HTML5 Promise : does resolve call end promiseHTML5 Promise : 确实解决呼叫结束承诺
【发布时间】:2014-12-02 17:50:00
【问题描述】:

例如我们有一个类似var prom = new Promise(function(resolve,reject){...})的承诺

当满足某些条件时,我们调用resolve,这会结束promise调用,还是我们必须在调用resolve(params)之后显式调用return

【问题讨论】:

  • 我不确定你的意思是“结束承诺电话”?对您传递给Promise 构造函数的resolver 函数的调用?
  • 最后,我的意思是解析后的语句都不应该执行
  • 不,resolve 是“只是一个函数”。调用它没有任何特殊的returnthrow 语义。
  • 补充一下 Bergi 所写的内容 - 显式构造的重点通常是与回调 API 互操作,因此需要 return 是没有意义的。另一方面 - 投掷将拒绝以保持投掷安全。

标签: javascript html promise ecmascript-6


【解决方案1】:

是的,resolve 语句后面的代码仍将被执行。这就是为什么你有责任设计你的逻辑,以免出现意外操作。您可以返回,也可以使用if-else 块。

很容易看到:

var prom = new Promise(function(resolve,reject) {
    resolve(123);
    console.log('still working')
});
prom.then(function(data) { console.log(data) });

结果将是

still working
123 

但请注意,still working 出现在之前解决回调甚至认为它已在一个之后解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-03
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多