У меня есть облако Clode, похожий на следующий, и «тогда» в «SomeFunction» никогда не будет выполнена:httpRequest.then не вызывался
Parse.Cloud.job('someJobName', function (request, status) {
var query = new Parse.Query('User');
query.find().then(function (results) {
if (results.length > 0) {
Parse.Cloud.httpRequest({
method: 'POST',
url: '...',
otherStuf: ...,
success: function (httpResponse) {
var somePromises = [];
_.each(results, function (userDataRecord) {
somePromises.push(someFunction(userDataRecord));
});
return Parse.Promise.when(somePromises)
.then(function() {
// Do some more stuff
});
},
error: function (httpResponse) {
// report error
}
});
}
});
});
function someFunction(userDataRecord) {
var promise = Parse.Promise.as();
promise.then(function() {
Parse.Cloud.httpRequest({
url: '....',
...,
}).then(function (httpResponse) {
// Do something here
});
});
return promise;
}
Как уже упоминалось выше, моя проблема в том, что «тогда» часть внутри «someFucntion» никогда не вызывается. Я верю, что retrurnes httpRequest перед выполнением этой части, потому что HTTP-вызов делает то, что он предположил, и код, который находится в «// Сделайте еще несколько вещей», выполняется правильно.
Что мне нужно для этого кода, но перед этим необходимо вызывать код внутри 'then' on 'someFunction'.
Я, скорее всего, здесь что-то не так.
EDIT
Я получил его на работу, перемещая 'затем' к самому
function someFunction(userDataRecord) {
var promise = Parse.Promise.as();
promise.then(function() {
Parse.Cloud.httpRequest({
url: '....',
...,
});
}).then(function (httpResponse) {
// Do something here
});
return promise;
}
Благодарим вас за ответ. Я уже пробовал это. «HttpRequest» выполняется, но все, что находится внутри «then», никогда не вызвано. – rmcc
О, не могли бы вы повторить попытку размещения 'return' перед' query.find' и 'Parse.Cloud.httpRequest' в обратном вызове задания? – eth3lbert
Я не думаю, что понял. – rmcc