0

代码如下:

function fun(){
    var flag = false;
    setTimeout(function(){
        flag = true;        
    },1000)
    return flag;
}

比方说我想让setTimeout这个异步函数执行完毕后再执行后面的return flag;,请问怎么实现呢?

查看全部 6 个回答

0

1.可以定义个戳判断

if(flag == true){
 return flag
}

2.利用异步方案(promise,generator,async)

var p = new Promise(function (resolve, reject) {
    setTimeout(function(){
        flag = true;
        resolve(flag)
    },1000)
})

p.then(function(flag){
  // 处理flag
})

推荐答案

2

“异步”,这个概念就是让某个函数先不要执行... 你所说的肯定没法直接实现。

如果你是要拿到异步结果的话,可以考虑回调函数,也可以考虑使用ES2016的async和await