Javascript 为什么async之后的语句在使用async函数的语句之前执行?
我不熟悉异步/等待。我希望上述代码的结果是Javascript 为什么async之后的语句在使用async函数的语句之前执行?,javascript,ecmascript-6,async-await,Javascript,Ecmascript 6,Async Await,我不熟悉异步/等待。我希望上述代码的结果是 function renderLoader() { console.log("Loading"); } function getResults() { setTimeout(myTimeout, 3000) } function myTimeout() { console.log("The Results"); } function clearLoader() { console.log("Loading ove
function renderLoader() {
console.log("Loading");
}
function getResults() {
setTimeout(myTimeout, 3000)
}
function myTimeout() {
console.log("The Results");
}
function clearLoader() {
console.log("Loading over");
}
const controlSearch = async () => {
renderLoader();
await getResults();
clearLoader();
}
controlSearch();
但是它却产生了这个,
Loading //then wait for 3 seconds
Results
Loading over
我不明白我做错了什么?等待/异步播放承诺。照原样,getResults同步返回未定义的,而它应该返回一个承诺,wait will,嗯,wait:
函数getResults{
返回新PromiseSolve=>{
设置超时=>{
我的超时;
决定
}, 3000
};
}
或:
函数getResults{
返回新PromiseSolve=>{
setTimeoutresolve,3000
}.然后我超时;
}
请参阅。getResults不返回PromiseI已阅读的文档。我的理解是,即使我没有明确提到回报,承诺也会得到回报。现在,我知道它是“未定义的”。
Loading
Loading over //then wait for 3 secs
Results