您好,创建了两个函数,一个用于从文件中读取单词,另一个用于将这些单词放入选择组件中。我相信的问题是,这是异步执行的,但是我不知道该在哪里兑现我的承诺或等待。
我已经阅读了有关这些概念的文章,但是它们似乎都不适用于我的示例,因此,我们将不胜感激。
我的第一个调用异步函数的函数。
<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数组,将不胜感激在重组这些函数方面的任何帮助
答案 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()。