立即解决承诺
Resolve promise immediately
是否可以立即有效地解决角度承诺,使代码表现得像同步调用?我知道这违背了承诺的目的,但我想这样做是为了单元测试。我的测试表明,then立即被调用,但我不确定这里是否存在then
仍然被视为异步的潜在时序问题?
function someService(){
var deferred = $q.defer();
deferred.resolve(myObj);
return deferred.promise;
}
someService().then(function(obj){
//will this be executed right away just like it would if this was a synchronous call?
// more code here under test
});
var myVal = 10;
myVal赋值会在then回调之前执行吗?或者我可以相信那一刻会马上过去吗?
您的单元测试可以模拟服务并返回promise;这样就可以测试您的.then()
。
这个主题包含在类似的问题中:
- Angular中基于promise的单元测试代码
要点是:
- 调用CCD_ 3和CCD_
- 您的模拟服务返回
promise
回到你的问题:
myVal赋值会在then回调之前执行吗?或者可以我相信那个时候总会马上过去?
有人(@gp)在评论中对此进行了报道。回调是异步的,所以它可能会立即执行,也可能不会立即执行。为了确保您的分配按正确的顺序完成,您可以预先初始化它,或者在then
回调中初始化它,并正确地链接它们。
相关文章:
- 简单的ES6承诺问题-交换解决和拒绝参数
- RxJS等待承诺解决
- 如何在解决承诺之前和之后验证值
- AngularJS-我怎么知道何时解决了对父控制器的承诺
- 在我的案例中,如何解决我的承诺问题
- 所有承诺解决后返回
- $.当承诺解决得太早时
- 如果你用另一个承诺解决一个承诺会发生什么
- 基于另一个承诺解决承诺
- 承诺解决不了问题
- 如何知道什么时候所有的承诺都被拒绝了,或者用基本的js承诺解决了
- Ember RSVP承诺解决firefox插件端口消息传递方案无法解决的模型
- 客户端等待服务器承诺解决
- while(true)循环中的承诺/等待承诺解决
- 推迟承诺解决
- 用承诺解决jQuery延迟
- 等待多个单独的承诺解决
- EmberJS - 在承诺解决后调用超级操作
- 如何为另一个承诺解决一个承诺
- 为什么我的承诺散列在传递的承诺解决之前就解决了?