Моя основная цель - отложить счетчик до его запуска.Как добавить динамические обещания или задержать текущий?
Представьте, что тайм-аут отключает 'n' до '0', а затем запускает событие, но его можно сбрасывать асинхронно до 'n' каждый раз, когда что-то происходит.
Я попытался достичь этого, используя «обещания» с помощью $ q.
Я пытался добавить динамически новые обещания с тайм-аутом внутри цепочки новой задержки.
Но прежде чем достичь этой цели, я не мог даже переложить новые обещания.
Пример:
var d1 = $q.defer();
var d2 = $q.defer();
d1.promise.then(function(data) {
return 'd1' + data;
});
d2.promise.then(function(data) {
return 'd2' + data;
});
var t = $q.all([d1.promise]);
t.then(function(data) {
console.log(data);
});
$timeout(function()
{
d1.resolve("1000");
}, 1000);
$timeout(function()
{
t.then(function() {
d2.resolve("800");
});
}, 800);
Он выводит только: [ "1000"] вместо [ "1000", "800"]
Мой поиск до сих пор:
stackoverflow не помогло меня.
angular-promise-tracker Я не могу понять этот код, как он ведет себя именно для того, что мне нужно. Но это сделано для чего-то другого.
't' только слушает' d1', поэтому вы никогда не получите массив с обоими значениями. Обе отложенные решения разрешаются (если вы добавляете консоль в 'd2.promise.then'. Angular-prom-tracker создает обещания обертки и дает вам прослушиватель событий. – kalley
вы принимаете ответ без обещаний? –
@d ' alar'cop Я согласился, потому что решил проблему, не используя «обещания». Таким образом, не-использование обещаний было решением. Несколько строк кодов и дали мне такое же поведение. Вот почему. – Ismael