等待异步函数完成,然后再进行迭代

时间:2020-11-09 20:21:40

标签: react-native promise cross-platform react-native-ios react-native-cli

我有一个“ for”循环,可在按钮单击时最多设置10个警报,在android上,它可以完美运行而没有任何问题,但是在iOS上,它仅设置循环中的最后一个警报,即使其打印“控制台中出现“成功”消息10次。经过一些测试(在每次迭代中添加超时)后,我相信在设置警报之前循环正在迭代。我尝试在“ ReactNative.scheduleAlarm”之前添加“ await”,但是它给出了一个错误,提示“不能在异步函数之外使用await关键字”。因此,我该怎么做才能等到计划警报功能完成后再进行迭代。

我正在使用“ react-native-alarm-notification”库来管理警报,而我使用的是RN 0.59.5。

for (i = index; i < this.props.prayers.PrayerTimes.length; i++ ){
         fire_time = this.props.prayers.PrayerTimes[i][field.key]
         fire_datee = this.props.prayers.PrayerTimes[i].date
                            
         ReactNativeAN.scheduleAlarm({
                 title: PrayersStr[field.key],
                 message: " ",
                 tag: field.key,
                 color: "white",
                 channel: "my_channel_id",
                 small_icon: "ic_launcher",
                 loop_sound: "true",
                 sound_name: sound,
                 fire_date: moment(fire_datee, 'DD/MM/YYYY').format('DD-MM-YYYY') + ' ' + fire_time
                     }).then(res => {
                         console.log("SUCCESS")
                         if (this.props.alarms == null){
                            Identity.setAlarms({ [field.key]: true })
                          } else {
                            if(this.props.alarms[field.key] != true){
                             Identity.setAlarms({ ...this.props.alarms, [field.key]: true })
                                }
                              }
                        }).catch(e => {
                                console.log('error', e);
                              });

                            
                          }

0 个答案:

没有答案