如何将 $q 的构造函数语法与 Angular $http 的 config.timeout 一起使用?
How to use $q's constructor syntax with Angular $http's config.timeout?
由于 Promise
现已正式规范,我如何将以下代码段中的 $q.defer()
promise 创建转换为使用 $q(function (resolve, reject) {})
构造函数语法?
// Cancel any ongoing $http request so that only the most recent $http
// callback gets invoked
var canceller;
function getThing(id) {
if (canceller) canceller.resolve();
canceller = $q.defer();
return $http.get('/api/things/' + id, {
timeout: canceller.promise
});
}
(来自 $http docs 的 Fyi:timeout
是“......以毫秒为单位,或者承诺在解决后应该中止请求。”)
我会这样做:
var canceller = null;
function getThing(id) {
if (canceller) canceller();
return Promise.resolve($http.get('/api/things/' + id, {
timeout: new Promise(function(resolve) {
canceller = resolve;
})
}));
}
我假设你从来没有使用过 canceller.reject
,所以你可以保留 resolve
函数本身以便下次调用它。
由于 Promise
现已正式规范,我如何将以下代码段中的 $q.defer()
promise 创建转换为使用 $q(function (resolve, reject) {})
构造函数语法?
// Cancel any ongoing $http request so that only the most recent $http
// callback gets invoked
var canceller;
function getThing(id) {
if (canceller) canceller.resolve();
canceller = $q.defer();
return $http.get('/api/things/' + id, {
timeout: canceller.promise
});
}
(来自 $http docs 的 Fyi:timeout
是“......以毫秒为单位,或者承诺在解决后应该中止请求。”)
我会这样做:
var canceller = null;
function getThing(id) {
if (canceller) canceller();
return Promise.resolve($http.get('/api/things/' + id, {
timeout: new Promise(function(resolve) {
canceller = resolve;
})
}));
}
我假设你从来没有使用过 canceller.reject
,所以你可以保留 resolve
函数本身以便下次调用它。