JS中如何和让异步函数优先执行?
代码如下:
function fun(){
var flag = false;
setTimeout(function(){
flag = true;
},1000)
return flag;
}
比方说我想让setTimeout这个异步函数执行完毕后再执行后面的return flag;
,请问怎么实现呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
“异步”,这个概念就是让某个函数先不要执行... 你所说的肯定没法直接实现。
如果你是要拿到异步结果的话,可以考虑回调函数,也可以考虑使用ES2016的async和await
没办法。
如果要等 setTimeout 执行完再调用,只能用callback的方式
异步和同步的区别就在于异步不阻塞程序执行
你提的问题违背了异步本身的意义,考虑异步+回调实现你要的功能
异步使用同步的写法在ES6中async/await有实现
本质上是实现一个迭代器,执行到await的时候暂停了,直到这一个Promise resolve后才会自动调用
.next()
继续执行。你要的功能可以这样实现:
1.可以定义个戳判断
2.利用异步方案(promise,generator,async)
因为异步函数不知道什么时候结束,所以不能用return,只能在异步函数外面套一个函数形参为callback获得异步函数中执行的结果。举个简单的例子:
把return flag放到flag = true下面。