是否有可能立即解决角度承诺并有效地使代码表现得像同步调用?我知道这违背了承诺的目的,但我想为单元测试目的这样做。我的测试显示当时正在调用,但我不确定这里是否存在潜在的时间问题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赋值是否会在当时的回调之前执行?或者我可以相信当时会永远立即去吗?
答案 0 :(得分:0)
您的单元测试可以模拟服务并返回承诺;这样就可以测试.then()
。
此主题包含在类似的问题中:
要点是:
beforeEach
和inject
来嘲笑您的服务,promise
回到你的问题:
myVal赋值是否会在当时的回调之前执行?或者可以 我相信当时会永远立刻去吗?
有人(@gp)在评论中说明了这一点。回调是异步的,因此它可能会立即执行,也可能不会立即执行。为了确保您的分配按正确顺序完成,您可以将其初始化为预先,或者在then
回调中对其进行初始化并将其正确链接。