【问题标题】:Proper way of chaining RSVP promises链接 RSVP 承诺的正确方式
【发布时间】:2014-04-05 13:17:45
【问题描述】:

所以我有一个函数 data.people() 发送和接收 http 请求和接收数据,因此我使用 Promise 并且这个函数返回一个 Promise。之后我使用以下链接

data.people()
.then(function() {

    ....
}, function(err) {
    console.error(err);
}).then(function() {
        ...
}, function(err) {
    console.error(err);
}).then ...

所以我写这个正确吗,因为我找不到任何关于此的文档,当我在第三个 promise 中将 eventListener 附加到具有给定 id 的一个元素时,它在执行第二个 promise 之前执行(其中这个元素被另一个具有相同 id 的更改)并且在第三个承诺(我需要它的地方)中不起作用。 Here 是我在 jsfiddle 中的完整代码。

【问题讨论】:

  • 您的承诺处理程序将“捕获”错误并使用undefined 恢复下一个函数!

标签: javascript promise rsvp.js


【解决方案1】:

是的,你正在写作品,但远非最佳。

没有理由链接.then 调用,除非您从其中一个返回一个promise,在这种情况下它会等到异步操作完成。

您的代码可以简化为:

data.people().then(function(people){
    //rest of code here
});

因为你的 then 没有一个返回承诺。

不返回承诺的承诺将几乎立即继续到下一个.then

此外,如果您执行链接处理程序并希望在以后的.then 调用中访问返回值,则必须从该.then 处理程序返回数据。

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多