【发布时间】:2015-05-15 00:17:22
【问题描述】:
这里有 3 个功能,第一个是我的承诺。
fnGetIps : function () {
return new Promise(function(resolve, reject) {
var err = [], path = getBaseUrl();
restGet(path + NAMES, function (res, edges) {
if (res === undefined) {
reject("Unable to get data");
} else {
resolve(edges);
}
});
});
},
第二个是我使用我的承诺的地方。
fnGetData: function(obj){
var promise_holder;
for (property in obj) {
if (obj.hasOwnProperty(property)) {
if(condition){
promise_holder = fngetip();
}
if(condition2){
//some other code
}
}
}
promise_holder.then(function (ifChildren) {
obj.children = ifChildren;
}, function (err) {
console.error(err);
});
}
最后是我调用 fnGetData 的函数
TopoTree : function(children) {
var treeArray;
for (i = 0; i < children[i]; i++) {
fnGetData(children[i]);
}
treeArray.push(treeData);
return treeArray;
},
在fnGetData 的所有承诺都解决之前,我不想返回TreeArray。
如何等待所有的promise先被resolve然后返回数据?
我不能使用promise.All,因为我在topotree 范围内没有promise_holder,还是我想错了方向?
【问题讨论】:
-
你应该重新考虑你的变量名。他们令人困惑。 (makinggoodsoftware.com/2009/05/04/71-tips-for-naming-variables)
-
它们是 sudo 名称。
标签: javascript asynchronous promise