Нужна помощь в использовании await или обещаний с двумя функциями - PullRequest
0 голосов
/ 12 июня 2019

Привет, мы создали две функции: одну для чтения слов из файла, а другую для помещения этих слов в выбранный компонент. Проблема, которую я считаю, состоит в том, что она выполняется асинхронно, но я понятия не имею, где поставить свои обещания или мои ожидания.

Я читал статьи об этих понятиях, но ни одна из них, похоже, не применима к моему примеру, поэтому любая помощь будет высоко оценена.

Моя первая функция, которая вызывает асинхронную функцию.

  <script>

                            function readinfiles()
                            {

                                    var options = "<option value ='0'>select</option>";
                                    alert("hi");
                                    var values= getTxt();
                                    alert(values);


                            }

                    </script>

моя вторая функция, которая извлекает информацию

 <script src="jquery.js"></script>
                    <script>
                    getTxt =  function (){

                      $.ajax({
                            url:'fileslist.txt',
                            success: function (data){
                            return data.split('\n');
                            }
                      });
                    }
                    </script>

В настоящее время массив значений не определен, и любая помощь в реструктуризации этих функций будет принята с благодарностью

1 Ответ

0 голосов
/ 12 июня 2019

Сначала я бы порекомендовал объединить эти две функции в одну и поставить префикс с ключевым словом async . Таким образом, вы можете использовать обещание внутри, которое на самом деле пытается получить данные через ajax. Такое обещание может быть либо отклонено, либо решено. Если это решено - в вашем случае, если оно успешно загрузило список файлов - вместо возврата данных вы можете разрешить обещание с данными.

Вот код:

async function readinfiles() {

  var options = "<option value ='0'>select</option>";
  alert("hi");
  var promise = new Promise(function(resolve, reject) {

    $.ajax({
      url: 'fileslist.txt',
      success: function(data) {
        resolve(data.split('\n'));

      }
    });
  });

  var values = await promise;
  alert(values);
}
readinfiles();

Чтобы уточнить, здесь происходит волшебство:

  var values = await promise;
  alert(values);

Как видите, мы создаем новую переменную с именем values ​​и присваиваем ей результат обещания, указанного в ключевом слове await . Это означает, что она не будет выполнять следующую функцию - alert () - до того, как обещание будет разрешено или отклонено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...