这是我的代码,它循环遍历 forEach 并打印出“1”,但永远不会从 object.save() 返回,并且永远不会打印出 2、3 或其他任何内容。我尝试了很多其他方法,但似乎都不起作用。
注意:response.succes(或error)没有在任何地方被调用,代码肯定正在等待object.save()完成。
var promise = new Parse.Promise();
var query = new Parse.Query("SomeClass");
query.find().then(function(results) {
var promises = [];
results.forEach(function(object) {
object.set("SomeColumnName", true);
console.log('1');
promises.push(object.save(null, {
success: function(result) {
alert('2');
return ;
},
error: function(result, error) {
alert('3');
return ;
}
}));
});
Parse.Promise.when(promises).then(function() {
console.log('inside resolve');
promise.resolve();
}, function() {
console.log('inside reject');
promise.reject();
});
});
return promise;
最佳答案
您走在正确的轨道上,但您应该利用大多数 sdk 函数为您创建和返回 promise 的事实。有了这些,您可以大大简化代码:
// very handy utility library that provides _.each among many other things
// www.underscorejs.org
var _ = require('underscore');
// answer a promise to modify all instances of SomeClass
function changeSomeClass() {
var query = new Parse.Query("SomeClass");
// if there are more than 100 rows, set query.limit up to 1k
return query.find().then(function(results) { // find returns a promise
_.each(results, function(result) {
result.set("SomeColumnName", true);
});
return Parse.Object.saveAll(results); // and saveAll returns a promise
});
}
将其包装在云函数中并像这样调用成功/错误:
Parse.Cloud.define("changeSomeClass", function(request, response) {
changeSomeClass().then(function(result) {
response.success(result);
}, function(error) {
response.error(error);
});
});
关于javascript - 在解析 object.save();不返回任何东西,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501647/