Parse Promise Returns Empty Object
I'm iterating an array, but with each iteration, I'm calling an async method. Here is the code var getTaskResponse = function(displayedWidgetId) { var promises = []; // v
Solution 1:
The problem is that inside taskResponse.forEach
you are invoking getUserName
which is asynchronous. You know that when it completes more work will take place, but your outer function is not waiting for the completions to take place.
Here is an approach to take:
var getTaskResponse = function (displayedWidgetId) {
var promiseToReturn = newParse.Promise();
// 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 taskIssuedTo = {},
taskObj = {},
finalObj = {},
subTasks = [],
taskResponse = response.result;
var promisesToWaitOn = [];
taskResponse.forEach(function (widgetResponseObj, index) {
var issuedTo = widgetResponseObj.answeredBy.objectId,
taskResponseObj = JSON.parse(widgetResponseObj.widgetResponse),
taskSelected = taskResponseObj.taskSelected,
date = taskResponseObj.date;
promisesToWaitOn.push(function (userId) {
returngetUsersName(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));
});
returnParse.Promise.when(promisesToWaitOn).then(function () {
promiseToReturn.resolve(taskObj);
});
});
return promiseToReturn;
}
If you want to access the results from your function, you would do so like this:
getTaskResponse(widgitId).then(function(taskObj) {
// Here is where you can do something with the generated taskObj
});
Post a Comment for "Parse Promise Returns Empty Object"