我有一个奇怪的情况,其中setTimeout的行为与promise不同,我不知道为什么。我有这个测试有效:
it('should get comments with promptid', function () {
var url = encodeURI('/api/v1/comments?filter={"promptId":"59dd4e7c714d3e34de04030a"}&populate=[]');
httpBackend.expectGET(url).respond(comments);
setTimeout(function () {
httpBackend.flush();
}, 100);
return myService.getCommentsByPromptId("59dd4e7c714d3e34de04030a").then(function (response) {
expect(response.length).to.equal(1);
expect(response[0]._id).to.equal(comments[0]._id);
});
});
然而,如果我尝试这样做:
it('should get comments with promptid', function () {
var url = encodeURI('/api/v1/comments?filter={"promptId":"59dd4e7c714d3e34de04030a"}&populate=[]');
httpBackend.expectGET(url).respond(comments);
const prom = myService.getCommentsByPromptId("59dd4e7c714d3e34de04030a");
httpBackend.flush();
return prom.then(function (response) {
expect(response.length).to.equal(1);
expect(response[0]._id).to.equal(comments[0]._id);
});
});
在第二种情况下,我在2000ms后得到超时。有什么理由吗?我无法弄清楚。