【发布时间】:2016-05-30 10:49:31
【问题描述】:
如果可能的话,如何在函数中实现承诺,以便我可以摆脱超时?我从工厂“Prim”获取一些数据,函数看起来像:
$scope.getPre = function(id){
var url = WEB_API.MainUrl + '/api/prim/' + id +'/' + $window.sessionStorage.getItem('idsom');
Prim.getprim(function(data) {
$scope.prim1 = data;
$scope.prim = $scope.prim1[0];
}, url);
$scope.$apply();
}
以及我想摆脱的超时:
setTimeout(function() { // it can't work without timeout
$scope.getPre($routeParams.idprim);
}, 100);
【问题讨论】:
-
使用回调,会更干净
-
唯一的选项是promise,项目中有更多的超时,我必须更改promise,如果我使用回调它会不可读并且更复杂
-
var promise = new Promise((res, rej) => { foo(/* callback */ res); });其中foo是你需要等待的异步事件,它需要回调,然后在你的代码中你有setTimeouts 的其他地方你改为使用promise.then(() => /* ... */);跨度> -
这里的重点不是承诺/回调/什么,重点是同步与异步。为什么都依赖超时?直接调用 getPre 会出现什么问题?
标签: javascript angularjs promise