使用两个功能的wait或promise需要帮助

时间:2019-06-12 20:39:05

标签: javascript html asynchronous

您好,创建了两个函数,一个用于从文件中读取单词,另一个用于将这些单词放入选择组件中。我相信的问题是,这是异步执行的,但是我不知道该在哪里兑现我的承诺或等待。

我已经阅读了有关这些概念的文章,但是它们似乎都不适用于我的示例,因此,我们将不胜感激。

我的第一个调用异步函数的函数。

  <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>

目前还没有定义values数组,将不胜感激在重组这些函数方面的任何帮助

1 个答案:

答案 0 :(得分:0)

首先,我建议将这两个功能合并为一个,并以 async 关键字作为前缀。这样,您可以在内部使用 promise ,它实际上尝试通过ajax获取数据。这样的承诺可以被拒绝也可以被解决。如果已解决-在您的情况下,如果成功加载了文件列表-可以不使用返回的数据,而可以使用数据来解决promise。

以下是一些代码:

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);

如您所见,我们正在创建一个名为value的新变量,并为其分配 await 关键字所表示的承诺结果。这意味着在承诺被解决或被拒绝之前,它不会执行下一个函数alert()。