立即解决承诺

时间:2014-10-11 03:16:16

标签: javascript angularjs angular-promise

是否有可能立即解决角度承诺并有效地使代码表现得像同步调用?我知道这违背了承诺的目的,但我想为单元测试目的这样做。我的测试显示当时正在调用,但我不确定这里是否存在潜在的时间问题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赋值是否会在当时的回调之前执行?或者我可以相信当时会永远立即去吗?

1 个答案:

答案 0 :(得分:0)

您的单元测试可以模拟服务并返回承诺;这样就可以测试.then()

此主题包含在类似的问题中:

要点是:

  • 致电beforeEachinject来嘲笑您的服务,
  • 您的模拟服务返回promise

回到你的问题:

  

myVal赋值是否会在当时的回调之前执行?或者可以   我相信当时会永远立刻去吗?

有人(@gp)在评论中说明了这一点。回调是异步的,因此它可能会立即执行,也可能不会立即执行。为了确保您的分配按正确顺序完成,您可以将其初始化为预先,或者在then回调中对其进行初始化并将其正确链接。