несколько `.then ()` на одно обещание angularjs - все используют _original_ данные
Я пишу приложение angularjs, опираясь на обещания, и хотя оно работает, мне интересно, смогу ли я сделать это более оптимально.
В начале кода я создаю обещание, которое выполняет выборку некоторых данных. Когда это будет сделано, я хочу запустить несколько функций, которые все используют эти данные. Функции прикреплены к несвязанным частям приложения, поэтому я не знаю, в каком порядке они привязаны к обещанию. Их также не нужно делать по порядку.
app.service("Fetch", function ($q){
return function() {
var def = $q.defer();
somelibrary.asynccall(function(error, data){ //callback
if (error) def.reject(error);
else def.resolve(data);
});
return def.promise;
};
});
app.controller("ctrl", function ($scope, Fetch) {
var prom = Fetch();
//somewhere:
prom.then(function(data){$scope.var1 = data["VAR1"];});
//somewhere else:
prom.then(function(data){$scope.var2 = data["VAR2"]});
});
Основным недостатком здесь является то, что позжеthen
s выполняются только тогда, когда предыдущие завершены, что здесь не обязательно.
Также мне нужно добавитьreturn data
внутри каждогоfunction(data){...}
иначе следующееthen()
не имеетdata
имеется в наличии.
Нет ли другого способа сделать это, более подходящего для этой ситуации?
РЕДАКТИРОВАТЬ: как упомянуто @ Jfriend00, я ошибся; фактически обе функции выполняются параллельно, как только обещание успешно выполнено, и они не связаны друг с другом и, следовательно, не зависят друг от друга. Спасибо за вашу помощь