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