javascript - 如何在延迟解决后延迟执行 promise

标签 javascript promise angular-promise

我使用 Angular $q 创建一个延迟对象,如下所示:

var defer = $q.defer();
var promise = defer.promise;

setTimeout(function(defer){
    defer.resolve("nothing");
},2000,defer);

promise.then(function(){
    //code here
});

所以promise中的代码会延迟2秒,但是我想知道如何在defer解析后延迟代码执行,这样我就可以像这样延迟代码执行:

promise.delay(1000);

当我从 $http.post() 得到 promise 时

var promise = $http.post()...;
promise.then(function(){
     // code 
});

由于 Promise 已解决,因此如何延迟代码执行。

最佳答案

您应该使用$timeout而不是 setTimeout,它也具有已经返回 promise 的好处。

要仅在初始 Promise 解决后才开始延迟,只需将其放入 then 回调中即可:

promise.then(function(){
    return $timeout(2000)
}).then(function(){
    //code here
});

关于javascript - 如何在延迟解决后延迟执行 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38113218/

相关文章:

javascript - AngularJS - 如何在 $http 响应中传递额外的参数

javascript - 如何让 JavaScript Promise 等待另一个 Promise 在 for() 循环中得到解决

javascript 说 JSON 对象属性未定义,尽管它不是

rest - Vuejs 中的异步和等待

javascript - 在 jQuery 中取消延迟 promise

JavaScript Promises 和函数返回差异

angularjs - Angular-ui-route 使用 angularJS 工厂解析

javascript - react 导航 goBack() 并在上一个屏幕中更新

javascript - 添加外部脚本时不起作用

javascript - 获取body id的值并存为js中的变量