Я работаю с обещаниями, и я застрял с моим прецедентом. У меня есть массив функций трансформатора (каждая функция является обещанием и изменяет некоторую структуру JSON).цепочка цепочек обещаний с bluebird
Позвольте мне показать код.
Позволяет сказать, что это моя структура JSON (массив)
var data = [{a: 1, b:2}, {a:3, b:4}];
transformFunction
является определение функций преобразования изменения данных определенным образом. Эти две функции добавляет c
и d
свойство вышеуказанной структуры JSON:
var transformFunctions = { //
transform1: function (data) { // This function adds `c` property to each object from `a`
return new Promise(function (resolve) {
for (var i = 0; i < data.length; i++) {
data[i].c = data[i].a;
}
return resolve(data);
})
},
transform2: function (data) { // This function adds `d` property to each object from `c`
return new Promise(function (resolve) {
for (var i = 0; i < data.length; i++) {
data[i].d = data[i].c;
}
return resolve(data);
})
},
...
}
От пользователя UI определяет, какой трансформатор функции он должен использовать и в каком порядке. Допустим, он выбрал нормальный порядок, как это:
var userTransformList = ['transform1', 'transform2'];
Метод transform1
должен модифицировать данные и результат должен быть передан transform2
методу.
Я смотрел на: Promise.all
, но, похоже, он не заботится о порядке обещаний, и, самое главное, он должен передать предыдущий результат следующему обещанию.
Мне просто нужно спросить, но зачем вам использовать обещания для этого, это не асинхронно? – adeneo
Я упростил его для вопроса, в реальном usecase я могу сделать запрос db или ajax-вызов там. – sensor
Я не уверен, но из-за того, как вы его описываете, похоже, что вы просто хотите передать данные или что-то еще. Может быть, кто-то, у кого больше опыта работы с Bluebird, ответит, я только немного использовал его для пролонгации промежуточного программного обеспечения и т. Д. – adeneo