假设你有一个"定义" Parse.com云代码功能......
Parse.Cloud.define("exampleDefineFunction", function(request, response)
{
...
response.success("ok")
...
response.error("doh")
});
我想制作另一个云代码功能,
调用函数多次定义函数,
等待下一个,就像在serial promise chain
中一样可以这样做吗?
答案 0 :(得分:3)
我认为这应该可以解决问题!
在这种情况下,我们希望使用Parse.Promise.when()
返回在所有输入承诺时履行的新承诺 得到了解决。如果列表中的任何承诺失败,则返回 承诺将失败,最后一个错误。如果他们都成功了,那么 返回的承诺将成功,结果是结果 所有输入承诺
我试图让它相当自我记录,但如果您有任何问题,请告诉我。希望这有帮助!
// The promise chain for bulk image collection
Parse.Cloud.define("fetchBulkImages", function(request, response) {
// Array of URLs
var urls = request.object.get("urls");
// Array of promises for each call to fetchImage
var promises = [];
// Populate the promises array for each of the URLs
_.each(urls, function(url) {
promises.push(Parse.Cloud.run("fetchImage", {"url":url}));
})
// Fulfilled when all of the fetchImage promises are resolved
Parse.Promise.when(promises).then(function() {
// arguments is a built-in javascript variable
// will be an array of fulfilled promises
response.success(arguments);
},
function (error) {
response.error("Error: " + error.code + " " + error.message);
});
});
// Your scraping function to load each individual image
Parse.Cloud.define("fetchImage", function(request, response) {
...
response.success("image successfully loaded")
...
response.error("Error: " + error.code + " " + error.message);
});
答案 1 :(得分:1)
您是否考虑过使用beforeSave cloud hook进行预先保存检查?
在一次执行一个方面,你可以考虑使用serial promise chain排队你需要的任何东西。如果承诺得到解决或拒绝,每个承诺都会拥有它自己的一对回调。
此外,当前设置似乎会迅速导致您达到API请求限制。您是否考虑过使用URL数组执行单个查询以将其作为约束进行检查。通过这一个查询,您将知道数组中的哪些项已经存在。