Javascript JS异步/等待isn';t与forEach一起工作
以下是我正在使用的代码(IP地址由于明显的原因被审查):Javascript JS异步/等待isn';t与forEach一起工作,javascript,asynchronous,async-await,Javascript,Asynchronous,Async Await,以下是我正在使用的代码(IP地址由于明显的原因被审查): 无论出于何种原因,jobList变量是在getJobs()函数完成运行之前分配的。getJobs()函数最终返回正确的输出,但代码已经继续。我做错了什么?async不会自动将基于回调的代码转换为基于承诺的代码-您必须显式地将回调转换为承诺,并在希望将其用作承诺时返回承诺 function getJobs() { return new Promise((resolve) => { //Open API connection
无论出于何种原因,
jobList
变量是在getJobs()
函数完成运行之前分配的。getJobs()
函数最终返回正确的输出,但代码已经继续。我做错了什么?async
不会自动将基于回调的代码转换为基于承诺的代码-您必须显式地将回调转换为承诺,并在希望将其用作承诺时返回承诺
function getJobs() {
return new Promise((resolve) => {
//Open API connection and submit
var url = "http://IPADDRESS:8082/api/jobs?IdOnly=true"
var xhr = new XMLHttpRequest()
xhr.open("GET", url, true)
xhr.send()
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == "200") {
resolve(xhr.response)
}
}
});
}
然后,getJobs
将返回一个承诺,然后您可以使用wait
:
const jobList = await getJobs()
第二个函数不需要异步哦,感谢上帝!!!!这就是我错过的。我仍然习惯于整个=>编码结构。甚至不知道它到底是什么意思。我已经有8年没有深入研究过web开发了,所以我在标准和更新方面远远落后。这一切对我来说都太不直观了。是的,我本想这么做的,但我太激动了,忘了回来。我发帖后回复太快了,不允许我接受。
const jobList = await getJobs()