ich die folgende Funktion aufrufe:Wie diese asynchrone Funktion synchron machen
function uploadReturns() {
var uploads = me.getIssuesFromReturnsList();
uploadreturnsobjects(uploads); //process the uploads object and send it to an AJAX call
}
In me.getIssuesFromReturnsList
die uploadList
Variable zurückgegeben werden, bevor der Rest des Code ausführt, weil es asynchron ist (gemäß this question)
me.getIssuesFromReturnsList = function() {
var uploadList = [];
$.each(me.returnsList(), function (index, i) {
var issue = issueRepository.GetDefaultIssue();
issue.barcode = i.barcode;
issue.ReturnsAmount(i.amount);
var uploadItem = {
barcode: i.barcode,
amount: i.amount,
issue: ko.observable(issue)
};
uploadList.push(uploadItem);
issueRepository.GetIssuesOffline(i.barcode, function (issues) {
if (issues.length > 0) {
uploadItem.issue(issues[0]);
}
});
});
return uploadList;
}
Wie kann ich diesen Code ändern, sodass die Aufrufe nicht mehr asynchron sind und stattdessen auf die Ausführung des gesamten inneren Codes warten, bevor die uploadList
zurückgegeben wird?
Wrap es in einem 'Versprechen'? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise – sjahan