parse.com - open - En el código de la nube, llama a una función Parse.Cloud.run más de una vez en la serie
parse server js sdk (2)
Digamos que tiene una función de código de nube "definir" Parse.com ...
Parse.Cloud.define("exampleDefineFunction", function(request, response)
{
...
response.success("ok")
...
response.error("doh")
});
Quiero hacer otra función de código de la nube,
que llama a definir la función varias veces en serie ,
con uno esperando el próximo, como en una cadena de promesa en serie
Se puede hacer esto?
¿Ha considerado usar un gancho de nube beforeSave para hacer la comprobación previa a guardar?
En términos de ejecutarlos de uno en uno, podría considerar utilizar una cadena de promesas en serie para poner en cola todo lo que necesite. Cada promesa tendrá su propio par de devoluciones para su manejo si la promesa fue resuelta o rechazada.
Además, la configuración actual parece que hará que rápidamente llegues al límite de solicitud de tu API. ¿Ha pensado en realizar una única consulta con la matriz de URL para comprobar como una restricción? Con esa consulta, sabrá cuáles de los elementos en la matriz ya existen.
¡Creo que esto debería hacer el truco!
En este escenario, queremos usar Parse.Promise.when()
Devuelve una nueva promesa que se cumple cuando se resuelven todas las promesas de entrada. Si alguna promesa en la lista falla, entonces la promesa devuelta fallará con el último error. Si todos tienen éxito, la promesa devuelta tendrá éxito, y los resultados serán el resultado de todas las promesas de entrada
Intenté que sea bastante autodocumentado, pero avíseme si tiene alguna pregunta. ¡Espero que esto ayude!
// 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);
});