我怎样才能获得对承诺的延迟对象的引用?
How can I get a reference to a promise's deferred object?
如果我有对 promise 的引用,我如何才能获得对它的延迟对象的引用,以便我可以使用 deferred.notify..?
var promise = api.get('/some/url').then(function(response){
var items = [];
_.each(response.data, function(item){
// more code to process item
// how do I get a reference to deferred so I can do a...
// deferred.notify('processing ' + item.name);
});
return items;
});
return promise;
If I have a reference to a promise, how can I get a reference to it's deferred object?
你不能。承诺是消费方,可能只是被遵守。 deferred 仅供生产者使用,生产者可以触发通知。
你可以做的是
return api.get('/some/url').then(function(response){
var items = [];
var def = Q.defer();
_.each(response.data, function(item) {
// do this asynchronously (or there won't be any subscribers yet):
def.notify('processing ' + item.name);
});
def.resolve(items);
return def.promise;
});
这样做的复杂性和笨拙是通知现在被弃用的原因之一。
如果我有对 promise 的引用,我如何才能获得对它的延迟对象的引用,以便我可以使用 deferred.notify..?
var promise = api.get('/some/url').then(function(response){
var items = [];
_.each(response.data, function(item){
// more code to process item
// how do I get a reference to deferred so I can do a...
// deferred.notify('processing ' + item.name);
});
return items;
});
return promise;
If I have a reference to a promise, how can I get a reference to it's deferred object?
你不能。承诺是消费方,可能只是被遵守。 deferred 仅供生产者使用,生产者可以触发通知。
你可以做的是
return api.get('/some/url').then(function(response){
var items = [];
var def = Q.defer();
_.each(response.data, function(item) {
// do this asynchronously (or there won't be any subscribers yet):
def.notify('processing ' + item.name);
});
def.resolve(items);
return def.promise;
});
这样做的复杂性和笨拙是通知现在被弃用的原因之一。