我以自己的方式履行承诺,但我坚持使用我的用例。我有一组转换器函数(每个函数都是一个承诺并修改一些 JSON 结构)。
让我展示一些代码。
假设这是我的 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
但它似乎不关心承诺的顺序,最重要的是它需要将先前的结果传递给下一个承诺。