使用承诺等待代码执行的SAPUI5

使用承诺等待代码执行的SAPUI5,sapui5,Sapui5,我在这里是一个循环,每次迭代我都会调用\u checkExistingDefaultTimes来检查记录是否存在 问题是,循环中的代码直到我在for循环之外时才会执行 我有没有办法使用Promise来强制执行。然后在循环完成之前执行代码(推送oOpeningTimes) var oOpeningTimes = []; for (var i = 0; i < numberOfDays; i++) { this._checkExistingDefaultTimes(test.SiteInfo.

我在这里是一个循环,每次迭代我都会调用
\u checkExistingDefaultTimes
来检查记录是否存在

问题是,循环中的代码直到我在for循环之外时才会执行

我有没有办法使用Promise来强制执行
。然后在循环完成之前执行
代码(推送oOpeningTimes)

var oOpeningTimes = [];
for (var i = 0; i < numberOfDays; i++) {
this._checkExistingDefaultTimes(test.SiteInfo.SiteId,test.EffectiveDateFrom,      
 test.EffectiveDateTo)
       .then(function (bResult) {

           oOpeningTimes.push({
               temporaryDate: oDate,
               startTime1: oModelData[oWeekday].startTime1,
               endTime1: oModelData[oWeekday].endTime1,               
           });
});

oStoreData.OpeningTimes = oOpeningTimes;
oModel.setData(oStoreData);
var-oOpeningTimes=[];
对于(变量i=0;i
在循环之后,否。for循环是一个同步构造,承诺是异步的。您需要做的是等待循环中生成的所有承诺得到解决,然后再运行后续代码。这就是
承诺。所有
都是为。您可以执行以下操作:

var oOpeningTimes = [];
var oPromises = [];
for (var i = 0; i < numberOfDays; i++) {
oPromises.push(this._checkExistingDefaultTimes(test.SiteInfo.SiteId,test.EffectiveDateFrom,      
 test.EffectiveDateTo)
       .then(function (bResult) {

           oOpeningTimes.push({
               temporaryDate: oDate,
               startTime1: oModelData[oWeekday].startTime1,
               endTime1: oModelData[oWeekday].endTime1,               
           });
}));

Promise.all(oPromises).then(function() {
  oStoreData.OpeningTimes = oOpeningTimes;
  oModel.setData(oStoreData);
})
var-oOpeningTimes=[];
var oPromises=[];
对于(变量i=0;i
好极了,我明天就试试。谢谢!!