为什么异步函数会没效果呢?谁知道哦?
@click触发methods中的事件:
以下是结果
setTimeout 包进Promise 试试吧。
function delay(fn,time){return new Promise(resolve=>{setTimeout(()=>{resolve(fn())},time)})}
function fun1() { console.log(1)}
async function test(){ await delay(fun1,500);console.log(2)}
test();//测试一下
//输出 1,2
这类代码结构,setTimeout本来就是异步执行,再怎么打印都是先打印2再打印1的,异步任务会被加入执行队列
(1)所有同步任务都在主线程上执行,行成一个执行栈
(2)主线程之外,还存在一个任务队列,只要异步任务有了结果,就会在任务队列中放置一个事件
(3)一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,看看里面还有哪些事件,那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行
(4)主线程不断的重复上面的第三步