gpt4 book ai didi

angularjs - then 未调用已解决的 Promise 方法

转载 作者:行者123 更新时间:2023-12-02 11:30:31 24 4
gpt4 key购买 nike

我正在尝试使用 sinon、jasmine 和 $q 来 stub 一个方法。我希望该方法返回我的虚假数据。

问题是定义的 then 语句从未被调用,我不明白为什么。这已经是一个简化版本,但仍然无法正常工作:

  • 该 stub 被称为
  • 控制台日志调用 Steven Stub 被调用
  • 没有调用任何 then 回调
  • 没有错误消息

这是我的代码

var p = {steven: function() {console.log('original steven');}},
pStub = sinon.stub(p, 'steven', function(){
console.log('Steven Stub is called');
var defer = $q.defer();
defer.resolve({item: 5});
return defer.promise;
});

var promise = p.steven();

promise.then(
function(data){console.log('Peter?');},
function(data) {console.log('ERROR?');},
function(data) {console.log('progress?');});

有什么想法吗?

最佳答案

您需要调用摘要才能解决 promise 。在 Angular 2.0 中,这个问题将被修复(Angular 1.2 比 Angular 1.1 稍好一些),但同时你必须调用

$rootScope.$digest()

为了使 promise 得到解决。这是因为 Promise 通过 evalAsync 工作。请参阅this question了解有关摘要循环如何与 $q Promise 生命周期交互的更多信息。

关于angularjs - then 未调用已解决的 Promise 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23608127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com