【发布时间】:2014-12-26 00:58:21
【问题描述】:
我有这段代码,但我无法在 for 循环之外使用这个 userArray,不知道为什么它什么都不返回,这里是代码:
Parse.Cloud.define("test", function(request, response) {
var UserFavourite = Parse.Object.extend("UserFavourite");
var queryFavourite = new Parse.Query(UserFavourite);
var userArray = [];
var TestItem = Parse.Object.extend("TestItem");
var query = new Parse.Query(TestItem);
query.limit(1000);
query.equalTo('school', 'Union College (NY)');
query.find().then(function(results) {
return results;
}).then(function(results) {
for (var i = 0; i < results.length; i++) {
var object = results[i];
var item = object.get('item');
var school = object.get('school');
var meal = object.get('meal');
var UserFavourite = Parse.Object.extend("UserFavourite");
var queryFavourite = new Parse.Query(UserFavourite);
queryFavourite.equalTo("item", item);
queryFavourite.equalTo("school", school);
queryFavourite.find().then(function(users) {
for (var i = 0; i < users.length; i++) {
var user = users[i];
var userID = user.get('user').id;
if (userArray.indexOf(userID) === -1) {
userArray.push(userID);
}
// console.log(userArray);
return userArray;
}
return userArray;
});
console.log('sadf '+userArray);
}
console.log('sadf '+userArray);
return userArray;
}).then(function() {
console.log(userArray);
});
我已经查看了这个,但我似乎仍然能够在最后一个函数或之前的两个 console.log 中获取 userArray
How do I return the response from an asynchronous call?
提前感谢您的帮助。
【问题讨论】:
-
因为
queryFavourite.find()也是异步的.. -
@ArunPJohny 对,但我使用了
.then,所以它应该等到它完成对吗? -
then()将等待调用它的承诺完成......在这种情况下,外承诺在内部承诺之前完成 -
@ArunPJohny 好的,我该如何解决这个问题?有什么想法吗?
标签: javascript ajax parse-platform promise