Angular,用 settimeout ($q) 模拟一个 promise
Angular, mocking a promise with settimeout ($q)
我正在尝试为一项服务设置一个测试工具,让它花大约 1 秒的时间来处理前端的一些东西。
我正在使用 q,所以我可以在控制器中调用 .then,所以我想我现在可以通过使用设置超时来伪造它,但是我认为我的语法不正确。这是我尝试过的:
return $q(function(resolve, reject) {
setTimeout(function() {
}, 1000).then(resolve);
});
我只是想让它稍等一下然后解决。新手,希望得到任何建议,谢谢!
您的语法确实不正确。 setTimeout
函数不会 return 带有 .then()
方法的承诺 - 相反,它需要一个回调。你想使用
return $q(function(resolve) {
setTimeout(function() {
resolve();
}, 1000);
});
但是,如果您使用 Angular,您应该直接选择 $timeout
service,它会立即 return 一个承诺。
return $q(function(resolve, reject) {
setTimeout(resolve, 1000);
});
顺便说一句:在 angular 中你应该使用 $timeout
服务而不是 javascript setTimeout
无论如何,在 $q 中您还可以找到一个用例示例。
我正在尝试为一项服务设置一个测试工具,让它花大约 1 秒的时间来处理前端的一些东西。
我正在使用 q,所以我可以在控制器中调用 .then,所以我想我现在可以通过使用设置超时来伪造它,但是我认为我的语法不正确。这是我尝试过的:
return $q(function(resolve, reject) {
setTimeout(function() {
}, 1000).then(resolve);
});
我只是想让它稍等一下然后解决。新手,希望得到任何建议,谢谢!
您的语法确实不正确。 setTimeout
函数不会 return 带有 .then()
方法的承诺 - 相反,它需要一个回调。你想使用
return $q(function(resolve) {
setTimeout(function() {
resolve();
}, 1000);
});
但是,如果您使用 Angular,您应该直接选择 $timeout
service,它会立即 return 一个承诺。
return $q(function(resolve, reject) {
setTimeout(resolve, 1000);
});
顺便说一句:在 angular 中你应该使用 $timeout
服务而不是 javascript setTimeout
无论如何,在 $q 中您还可以找到一个用例示例。