异步功能不等待承诺得到解决

时间:2019-09-16 19:42:36

标签: javascript async-await

我正在使用Javascript调用databricks API。一旦获得响应对象,就需要解析该对象以显示数据。我正在异步函数中执行此操作,并且已经使用了await,但是由于函数在解决诺言之前正在前进,因此无法获取对象中的元素数量。

给我的印象是,如果我使用awaitasync,则将在语句后使用解析后的值。

async report_gen(url, folder_name, objlist) {

  var meta_response = await fetch(url, {
    method: 'GET',
    headers: {
      //
    }
  })
  var meta_data = await meta_response.json();

  //console.log(meta_data,meta_data.length,meta_data[0]);
  var num = await meta_data.length;
  console.log(meta_data, num, meta_data[0]);
  //Above line displays values Object, undefined and undefined

  for (var i = 0; i < meta_data.length; i++) {
    console.log(meta_data[i]['object_type']);
    if (meta_data[i]['object_type'] == "NOTEBOOK") {
      objlist.push(meta_data[i]['path']);
      console.log(typeof(objlist));
      console.log(objlist);
    } else if (meta_data[i]['object_type'] == "DIRECTORY")
      objlist = await this.report_gen("", meta_data[i]['path'], objlist);
  }
  return objlist
}

当我在console.log中打印数据时,我看到了API返回的对象,但是meta_data.length始终显示为未定义,meta_data[0]也是如此。如何使函数等待承诺得到解决?

0 个答案:

没有答案