Javascript 解析函数超时管理

Javascript 解析函数超时管理,javascript,parse-platform,promise,Javascript,Parse Platform,Promise,在。我们在某些依赖于外部服务请求的请求上遇到问题 如果我们有4个承诺,承诺1和承诺2创建对象,但是如果承诺3中的请求“超时”,我们需要销毁在流程中创建的任何内容。我以与以下示例类似的方式级联错误处理: var obj1, obj2, obj3; query.find().then(function() { obj1 = new Parse.Object('Anything'); return obj1.save(); }).then(function() { obj2 =

在。我们在某些依赖于外部服务请求的请求上遇到问题

如果我们有4个承诺,承诺1和承诺2创建对象,但是如果承诺3中的请求“超时”,我们需要销毁在流程中创建的任何内容。我以与以下示例类似的方式级联错误处理:

var obj1, obj2, obj3;
query.find().then(function() {
    obj1 = new Parse.Object('Anything');
    return obj1.save();
}).then(function() {
    obj2 = new Parse.Object('Anything');
    return obj2.save();
}).then(function _success() {
    obj3 = new Parse.Object('Anything');
    return obj3.save();
}).then(function _success() {
    response.success();
}, function _error(err) {
   var errorPromises = [];
   if (obj1 != undefined) errorPromises.push(deleteExternalStuff(obj1.id));
   if (obj2 != undefined) errorPromises.push(deleteExternalStuff(obj2.id));
   if (obj3 != undefined) errorPromises.push(deleteExternalStuff(obj3.id));

   Parse.Promise.when(errorPromises).then(function _success() {
        response.error();
   }, function _error() {
       response.error(err);
   });
});
deleteExternalStuff
函数对对象的一个id发出
get
请求,然后返回一个
object.destroy()
promise

我的问题是
get
查询有效,但是
deleteExternalStuff
中的
destroy
承诺不会从数据库中删除对象。对如何处理这个案子有什么建议吗

编辑:

我已经测试过了,无论何时出现超时,都会执行错误,但是
destroy()
的工作不正常

编辑2:
deleteExternalStuff
函数添加了类似的结构

function deleteExternalStuff(objectId) {
    var query = Parse.Query('Another Object');
    query.equalTo('objXXX', objectId);
    return query.find().then(function _success(anotherBunchOfObjects) {
        var deletePromises = _.map(anotherBunchOfObjects, function(obj) {
            return obj.destroy();
        });
        return Parse.Promise.when(deletePromises);
    }, function _error(error) {
        console.log(error);           // **ERROR LOG**
        return Parse.Promise.as();
    });
}
编辑3:

经过进一步测试,我在
deleteExternalStuff
函数中添加了一个错误处理程序,并打印到日志中。。。显然,
**错误日志**
打印以下内容:
{“code”:124,“消息”:“请求超时”}

这使我认为,如果已经达到超时限制,解析不允许在错误处理中使用链接承诺…:\


对于替代解决方案的建议,我们深表感谢。

要确保在您的请求完成之前删除所有对象,您必须等待所有承诺得到解决:

var promises = [];
if (obj1 != undefined) promises.push(deleteExternalStuff(obj1.id));
if (obj2 != undefined) promises.push(deleteExternalStuff(obj2.id));
if (obj3 != undefined) promises.push(deleteExternalStuff(obj3.id));
Promise.all(promises).then(function() {
    response.error(err);
});

为了避免超时问题,您可以将其设置为作业。您可以发布
deleteExternalStuff
代码吗?刚刚添加了第三次编辑,其中包含有关错误代码的更多信息。我实际上在
时有
,对不起,我的错误。。。刚刚编辑了这个问题,还包括了
deleteExternalStuff
函数问题是,我不确定原始的错误函数是否会等到所有承诺都实现,因为错误是
超时错误
。。。如果它是一个未找到的
对象
或类似的东西,那么请求实际上还有时间执行查询,但我不确定在这种情况下Parse的行为。