Parse platform Parse.com承诺实现

Parse platform Parse.com承诺实现,parse-platform,promise,Parse Platform,Promise,我试着做下面的事情,我的问题是在线评论的。如何将RegisteredUserRole和query.find()中的用户发送到链中的下一个then,而不在其中创建嵌套then // ... registeredUsersRoleQuery.first({ useMasterKey: true }). then(function(registeredUsersRole) { // This means that role was found, so simply return it

我试着做下面的事情,我的问题是在线评论的。如何将RegisteredUserRole和query.find()中的用户发送到链中的下一个then,而不在其中创建嵌套then

// ...
registeredUsersRoleQuery.first({
    useMasterKey: true
}).
then(function(registeredUsersRole) {
    // This means that role was found, so simply return it to the next promise
    return registeredUsersRole;
}, function() {
    // This means that role wasn't found, so create it and return it to the next promise
    var registeredUsersRoleAcl = new Parse.ACL();
    registeredUsersRoleAcl.setPublicReadAccess(false);
    registeredUsersRoleAcl.setPublicWriteAccess(false);
    return new Parse.Role(registeredUsersRoleName, registeredUsersRoleAcl).save{
        useMasterKey: true
    });
}).
then(function(registeredUsersRole) {
    var query = new Parse.Query(Parse.User);
    query.equalTo('verificationCodeVerified', true);

    // How can I send both the registeredUsersRole and the users from 
    // query.find() to the next then in the chain without creating 
    // a nested then in here?
    query.find({
        useMasterKey: true
    }).
    then(function(allVerifiedUsers) {
        registeredUsersRole.getUsers().
        add(allVerifiedUsers);
        return registeredUsersRole.save();
    });
}).
then(function() {
    // How do I have both the registeredUsersRole and the users here?
});

您可以使用
Parse.Promise.when

registeredUsersRoleQuery.first({ useMasterKey: true }).
then(null , function() {// null ignores
    // ...
    return new Parse.Role(...).save({useMasterKey: true });
}).
then(function(registeredUsersRole) {
    var query = new Parse.Query(Parse.User);
    query.equalTo('verificationCodeVerified', true);
    return Promise.when([
        registeredUsersRole, 
        query.find({ useMasterKey: true })
    ]);
}).
then(function(registeredUsersRole, allVerifiedUsers) {
     // access both here, no nesting was needed
});

为此创建嵌套闭包没有什么错。当然,缩进少一点:-)@Bergi这是我在IDE中使用的JS美化器。我只是想抓住可能来自前一个错误,然后沿着同一条链。上面的错误不能在嵌套的数据库中捕获,对吗?无论如何,通过适当地传递所提到的上下文,可以消除嵌套性吗?来自上面的错误不会被嵌套上的处理程序捕获(比如
catch
ing
try
块外部的异常),是的,但是所有错误(来自上面和嵌套的承诺)将被最外层承诺的处理程序捕获。嵌套可以通过传递上下文在某种程度上被压平,是的,但它不值得像您的示例中那样对单个级别进行模糊处理。这正是我所寻找的。谢谢