Я ищу, чтобы создать массив функций для динамического вызова, который позже будет использоваться в вызове обещания Q.all ([]).Как вы нажимаете вызовы функций на массив без вызова их в Node JS для использования Q?
Например,
//data is previously generated
var promiseArray = [];
for (var i = 0; i < data.length; i++){
promiseArray.push(functionCall(data[i]))
}
Q.all(promiseArray).then(function(){
//Do something
})
Как бы я нажал на массив без вызова функции до утверждения Q.all? Я не хочу вызывать его в цикле for, поскольку он не будет ловить никаких ошибок, и я не могу обработать ответ дальше.
EDIT:
Так прояснить мою проблему (так как я не думаю, что я был так ясно, как я должен был), вот это решение для статической длины данных, скажем, 3;
//data is previously generated
var data = [12432432,4324322392,433324323];
//Each function call can happen in parallel or series as its an external POST to an API
//I'm not bothered about speed for this application (as its low throughput) and can wait a few seconds for each
// response
//FunctionCall returns a promise
functionCall(data[0]).then(function(){
//Log success/failure to mongo
});
functionCall(data[1]).then(function(){
//Log success/failure to mongo
});
functionCall(data[2]).then(function(){
//Log success/failure to mongo
});
//OR
functionCall(data[0]).then(function(){
//Log success/failure to mongo
functionCall(data[1]).then(function(){
//Log success/failure to mongo
functionCall(data[2]).then(function(){
//Log success/failure to mongo
});
});
});
Но я не буду знать длину данных до выполнения
Uh, 'Q.all' действительно принимает множество обещаний, а не функций, поэтому вам нужно * их называть? – Bergi
В основном я хочу иметь возможность создавать массив функций для вызова с помощью Q.all ([]), не вызывая их при добавлении их в массив. В противном случае я назову их, когда я их добавлю, а также позвоню им в Q.all ([]) – aaaidan
Да, вы хотите сразу их вызвать. 'Q.all' не будет их называть. Я не понимаю, почему ваш первый фрагмент не будет работать. Ваш аргумент «* Я не хочу вызывать его в цикле for, поскольку он не будет ловить никаких ошибок, и я не могу обработать ответ дальше. *» Является ошибочным, вы можете легко ловить ошибки и обрабатывать результаты, затем'. – Bergi