vue怎么让一个函数执行完再执行另一个?

created(){
    this.getItem()
    this.search()
}

created里有两个函数
怎么让getItem()执行完了再执行search()呀

阅读 15.5k
4 个回答

如果是同步函数,那么自然会等待 getItem() 执行完再执行 search()

如果是异步函数,vue 钩子函数可以是异步函数,即:

async created() {
  await this.getItem();
  this.search();
}

这个没有什么参数,简单点可以把第二个方法放到第一个方法里面,如果有请求,就放到请求成功里面

created(){
    this.getItem(this.search)
}

然后在this.getItem函数中的最后去执行this.search

getItem(cb) {
  ...
  cb && cb();
}

使用await/async是最简单的解决办法,只需要这样改造:

async created(){
  await fun_a();
  await fun_b();
  //最后一个执行的方法不必用await
  fun_c();
}

然后每个方法都必须返回一个Promise

fun_a(){
  return new Promise((resolve, reject){
    if(true) resolve();
    reject();
  });
}

就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏