Parse platform Parse.com承诺实现
我试着做下面的事情,我的问题是在线评论的。如何将RegisteredUserRole和query.find()中的用户发送到链中的下一个then,而不在其中创建嵌套thenParse 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
// ...
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
ingtry
块外部的异常),是的,但是所有错误(来自上面和嵌套的承诺)将被最外层承诺的处理程序捕获。嵌套可以通过传递上下文在某种程度上被压平,是的,但它不值得像您的示例中那样对单个级别进行模糊处理。这正是我所寻找的。谢谢