我想在for循环中调用parse.com的函数,但是当我将函数放入for循环中时,for循环就完成了,而函数没有响应。
for (var i = 0; i <tourPackage.length; i++) {
var Apackage = tourPackage[i].attributes;
tourPackageDest.set("package_id",tourPackage[i].id);
tourPackageDest.set("itinerary",Apackage.holiday_short_detail);
var SD = Apackage.destination.split(',');
for(var k=0; k<SD.length;k++){
var destPlace = Parse.Object.extend("Cities_World");//DestinationMaster
var query = new Parse.Query(destPlace);
query.equalTo("place_name", SD[k]);
query.find().then(function(results){
console.log(results);
});
tourPackageDest.save(null,{
success: function(Tpackage){
console.log("Successfully saved in PackageItineraryMaster");
}
});
}
}
最佳答案
您调用的许多方法(例如,.find()、.save())都是异步的。从表面上看,您正在编写代码,就好像它们是同步方法一样。以下是如何构建代码以解决这种异步性的示例 ( via the Parse docs ):
var query = new Parse.Query("Comments");
query.equalTo("post", 123);
query.find().then(function(results) {
// Collect one promise for each delete into an array.
var promises = [];
_.each(results, function(result) {
// Start this delete immediately and add its promise to the list.
promises.push(result.destroy());
});
// Return a new promise that is resolved when all of the deletes are finished.
return Parse.Promise.when(promises);
}).then(function() {
// Every comment was deleted.
});
基本上,您希望将异步函数中的每个 promise 添加到一个数组中,并创建一个新的 promise ,当所有这些 promise 都得到解决时,该新的 promise 就会得到解决。
关于javascript - 如何在parse.com的异步方法中使用for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966977/