使用Node js Await / Async函数

时间:2018-11-01 19:14:07

标签: javascript node.js async-await

这是我的axios调用API。

export function axiosGet (url) {
      return opsutils.get(url)
        .then(function (response) {
            return response.data.data;
        })
        .catch(function (error) {
            return 'An error occured..' + error;
        })
    }

从这里我叫它

async getDirList(data){
      this.domainDir=data.domain_name
      var apiurl="some URL"
      var stat = await axiosGet(apiurl)
      if (status){
        this.domainlog= stat
    }

从这里我叫上面定义的异步函数

Notify(data){
    var filelist = this.getDirList(data)
    if(filelist){
           var status =  createNotification(data.domain_name,message_stripped,'Degrading web server performance')
}

理想应该是这样的,它应该仅在promise被解决后才继续进行,现在var文件列表为空。 我该如何解决这个问题?提前感谢

1 个答案:

答案 0 :(得分:4)

问题是this.getDirList(data)也没有被异步访问。请记住,由于现在是异步的,它正在返回一个Promise,所以您要么需要将其与.then()链接起来:

Notify(data){
    var filelist = this.getDirList(data)
        .then(data => {
            var status = createNotification(data.domain_name,message_stripped,'Degrading web server performance')
        });

}

或者也将Notify()转换为异步函数:

async Notify(data){
    var filelist = await this.getDirList(data);
    if(filelist){
           var status =  createNotification(data.domain_name,message_stripped,'Degrading web server performance')
}

此外,确保您实际上是从getDirList返回数据,以便在等待时可以使用返回值。