Parse platform 在迭代中解决承诺

Parse platform 在迭代中解决承诺,parse-platform,parse-cloud-code,es6-promise,Parse Platform,Parse Cloud Code,Es6 Promise,我编写了一些代码,可以发送一条短信,也可以在一组电话号码上发送推送通知。然而,在试图避免多次成功/错误的同时,我在找出解决承诺的方法时遇到了一个问题。GuestDigits是一组电话号码。如有任何想法或意见,将不胜感激 Parse.Cloud.define('sendOutNotifications', function(request, response) { var owner = request.user; var ownerNumber = owner.get('phone

我编写了一些代码,可以发送一条短信,也可以在一组电话号码上发送推送通知。然而,在试图避免多次成功/错误的同时,我在找出解决承诺的方法时遇到了一个问题。GuestDigits是一组电话号码。如有任何想法或意见,将不胜感激

  Parse.Cloud.define('sendOutNotifications', function(request, response) {

  var owner = request.user;
  var ownerNumber = owner.get('phoneNumber');
  var guestlistId = request.params.guestlistId;
  var guestDigits = request.params.guestDigits;
  var eventName = request.params.eventName;
  var promotionTime = request.params.promotionTime;
  var firstName = owner.get('firstName');

  guestDigits.forEach(function(guestDigit) {

    var queryUser = new Parse.Query(Parse.User);
    queryUser.equalTo('phoneNumber', guestDigit);

    queryUser.find().then(function(result) {

      if (result.length > 0) {
        Parse.Cloud.run('sendPushNotification', {
          user: JSON.stringify(result[0]),
          firstName: firstName,
          eventName: eventName,
          promotionTime: promotionTime
        });
      } else {
        Parse.Cloud.run('sendTextMessage', {
          firstName: firstName,
          phoneNumber: guestDigit
        });
      };
    });
  });
});

您应该在代码中说明循环。每个查询都将返回一个承诺,您可以使用
.then()
块进一步链接该承诺。您将所有这些承诺添加到一个数组中,并在完成循环后,等待所有承诺的实现

Parse.Promise.as().then(function()){
var承诺=[];
forEach(函数(guestDigit){
var queryUser=newparse.Query(Parse.User);
queryUser.equalTo(“电话号码”,guestDigit);
promises.push(queryUser.find().then(函数(结果)){
如果(result.length>0){
返回Parse.Cloud.run('sendPushNotification'{
用户:JSON.stringify(结果[0]),
名字:名字,
eventName:eventName,
promotionTime:promotionTime});
}否则{
返回Parse.Cloud.run('sendTextMessage'{
名字:名字,
电话号码:guestDigit});
}
}));
});
//等待所有的承诺兑现
返回Parse.Promise.when(承诺);
}).然后(函数(){
//成功
},函数(错误){
//错误
}));

您应该在代码中提示循环。每个查询都将返回一个承诺,您可以使用
.then()
块进一步链接该承诺。您将所有这些承诺添加到一个数组中,并在完成循环后,等待所有承诺的实现

Parse.Promise.as().then(function()){
var承诺=[];
forEach(函数(guestDigit){
var queryUser=newparse.Query(Parse.User);
queryUser.equalTo(“电话号码”,guestDigit);
promises.push(queryUser.find().then(函数(结果)){
如果(result.length>0){
返回Parse.Cloud.run('sendPushNotification'{
用户:JSON.stringify(结果[0]),
名字:名字,
eventName:eventName,
promotionTime:promotionTime});
}否则{
返回Parse.Cloud.run('sendTextMessage'{
名字:名字,
电话号码:guestDigit});
}
}));
});
//等待所有的承诺兑现
返回Parse.Promise.when(承诺);
}).然后(函数(){
//成功
},函数(错误){
//错误
}));