RSVP.js承诺在调用.then()之前运行

时间:2015-09-17 15:31:44

标签: promise rsvp.js

我认为这是一个基本的错误,但由于我的搜索没有效果,所以不管怎样我们在这里做:)

我有一个函数返回一个promise,但它运行得如此之快(因为代码几乎为空),当调用.then()时,为时已晚并且没有调用任何事件。

之所以发生这种情况,是因为它是一个虚拟代码(用于测试),因此,应用Promise概念是因为实际的异步请求已经完成。

那么,有没有办法在处理函数后调用解析/拒绝函数?或者我必须使用 lazy promises

更新:我尝试RSVP.defer()但不喜欢它的方法,因为它不够直观(需要一些解决方法来设置.then().catch()

1 个答案:

答案 0 :(得分:1)

  

我有一个函数返回一个promise,但它运行得如此之快(因为代码几乎为空),当调用.then()时,为时已晚并且没有调用任何事件。

即使只有一点也没关系。表现良好的承诺(如本机承诺,几乎每个库除了旧的jQuery)都构建了一个保证,无论何时附加then处理程序 - 它将调用处理程序(并且它将始终异步执行)。承诺只是一个值+时间

RSVP通过一系列1000多项测试,以确保始终如此。

var p = Promise.resolve(); // create empty, already resolved promise

setTimeout(function(){ 
p.then(function(){
     // will always be called, eventually.
});
}, 1000000 + Math.random() * 10000000);
相关问题