Javascript 如何从异步函数中访问async/await范围变量?

Javascript 如何从异步函数中访问async/await范围变量?,javascript,ecmascript-6,Javascript,Ecmascript 6,我想在async/await函数中使用cafesList和placeList变量,这样我就可以将包含对象数组的这两个变量传递给另一个函数,在这个函数中,我将把这两个变量数据合并到一个对象数组中 我尝试将这两个变量声明为全局变量,并尝试利用外部变量,但得到如下输出- Promise{} __承诺 [[PromiseStatus]]:“已解决” [[PromiseValue]]:未定义 但是当直接调用fetchCafes()和fetchPlaces()时,这些函数会生成一个对象数组 这是fetch

我想在async/await函数中使用
cafesList
placeList
变量,这样我就可以将包含对象数组的这两个变量传递给另一个函数,在这个函数中,我将把这两个变量数据合并到一个对象数组中

我尝试将这两个变量声明为全局变量,并尝试利用外部变量,但得到如下输出-

Promise{}
__承诺
[[PromiseStatus]]:“已解决”
[[PromiseValue]]:未定义

但是当直接调用
fetchCafes()
fetchPlaces()
时,这些函数会生成一个对象数组

这是fetch api方法-

function sendHttpRequest(method, url) {
  return fetch(url, {
    method: method,
  })
    .then((response) => {
      if (response.status >= 200 && response.status < 300) {
        return response.json();
      } else {
        return response.json().then((errData) => {
          console.log(errData);
          throw new Error("Something went wrong! - Server Side");
        });
      }
    })
    .catch((error) => {
      console.log(error);
      throw new Error("Something went wrong!");
    });
}

那是给你剪的吗

从函数返回数据:

async function fetchCafes() {
    try {
        const cafesList = await sendHttpRequest(
            "GET",
            "https://raw.githubusercontent.com/debojyoti/places-fake-rest-api/master/cafes.json"
        );
        console.log(cafesList);
        return cafesList;
    } catch (error) {
        console.log(error.message);
    }
}

async function fetchPlaces() {
    try {
        const placeList = await sendHttpRequest(
            "GET",
            "https://raw.githubusercontent.com/debojyoti/places-fake-rest-api/master/places.json"
        );
        console.log(placeList);
        return placeList;
    } catch (error) {
        console.log(error.message);
    }
}
调用这两个函数并等待它们完成。然后处理结果:

Promise.all([fetchCafes(), fetchPlaces()]).then(arr => {
    const cafes = arr[0];
    const places = arr[1];
    // merge them here...
});

那么,如何从merge函数接收组合数组?如果merge函数返回一个数组?为此,我需要再次使用承诺块吗?merge函数的返回结果可用于在另一个函数内搜索,该搜索函数在每个击键事件侦听器上搜索。。因此,如果您能告诉我如何处理合并函数的返回结果,这将非常有帮助。谢谢您应该
return
它们,以便这些值满足承诺。
Promise.all([fetchCafes(), fetchPlaces()]).then(arr => {
    const cafes = arr[0];
    const places = arr[1];
    // merge them here...
});