Когато използвам обещания за изразяване на зависимости между задания, където разрешената стойност става маловажна, има известна опасност да забравя връщане някъде. Пример:
startSomething().then(function() {
Q.all(tasks.map(function(task) { return task.startIt(); }))
}).then(collectOutput).done();
Тук Q.all
връща обещание и трябваше да го върна. Ако не направите това, означава, че до момента, в който collectOutput
бъде извикан, всички задачи са стартирани, но няма гаранции, че са приключили.
Този вид грешка води до състояние на състезание и може да бъде изключително трудно да се възпроизведе и проследи. Така че се чудя има ли някакъв инструмент, който да помогне за откриването и избягването на този вид проблем? Може би някаква обещаваща библиотека, която предупреждава, когато функция по пътя се връща недефинирана? Или открива обещания без слушатели, както Bluebird прави за необработени отхвърляния?
startSomething().then(() => Q.all(tasks.map(task => task.startIt())))
- person jib   schedule 24.12.2015