【发布时间】:2015-06-13 18:42:14
【问题描述】:
我正在迭代一个数组,但每次迭代时,我都在调用一个异步方法。
这是代码
var getTaskResponse = function(displayedWidgetId) {
var promises = [];
// var promise = new Parse.Promise();
jQuery.ajax({
type: "POST",
url: 'https://api.parse.com/1/functions/getWidgetResponse',
data: {
"groupWidgetId": displayedWidgetId
},
beforeSend: function(request) {
request.setRequestHeader("X-Parse-Application-Id", parse_ids.app_id);
request.setRequestHeader("X-Parse-REST-API-Key", parse_ids.rest_api);
}
})
.then(function(response){
var promise = new Parse.Promise();
var taskIssuedTo = {},
taskObj = {},
finalObj = {},
subTasks = [],
taskResponse = response.result;
taskResponse.forEach(function(widgetResponseObj,index) {
var issuedTo = widgetResponseObj.answeredBy.objectId,
taskResponseObj = JSON.parse(widgetResponseObj.widgetResponse),
taskSelected = taskResponseObj.taskSelected,
date = taskResponseObj.date;
(function(userId){
getUsersName(userId).then(function(userName){
if (typeof taskIssuedTo[taskSelected] === "undefined") {
taskIssuedTo[taskSelected] = [];
subTasks = [];
}
subTasks.push({
"user" : userName.result.name,
"date" : date
});
taskIssuedTo[taskSelected] = subTasks;
taskObj[taskSelected] = taskIssuedTo[taskSelected];
});
}(issuedTo));
});
promise.resolve(taskObj);
return promise;
})
.then(function(obj){
console.log("After Promise Return :: "+JSON.stringify(obj));
});
}
在上面的for-each loop getUsersName 是被调用的方法。当我打印已解决的承诺时,这就是我得到的
承诺返回后::{"_resolved":true,"_rejected":false,"_resolvedCallbacks":[],"_rejectedCallbacks":[],"_result":{"0":{}}}.
我应该如何解决承诺,以便获得所需的输出?
【问题讨论】:
-
@Bergi- 与 @Andrew(jst variable name got changed) 声明的 promisesToWaitOn 相同。它用于存储我从 for-each 循环中获得的 Promise。
-
我认为应该是这样,但后来你并没有真正使用它。
标签: javascript jquery parse-platform promise