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 中您还可以找到一个用例示例。