Javascript 如何等待在数组中返回的承诺而不首先进行分解?
如果我有Javascript 如何等待在数组中返回的承诺而不首先进行分解?,javascript,Javascript,如果我有 const apiCall = async (url) => { try { const { data } = await axios.get(url); return [url, data]; } catch ({ response: { data } }) { console.log('Error', data); } } const [, call] = await validate('/api/root'); const data =
const apiCall = async (url) => {
try {
const { data } = await axios.get(url);
return [url, data];
} catch ({ response: { data } }) {
console.log('Error', data);
}
}
const [, call] = await validate('/api/root');
const data = await call;
假设我想打电话访问promise的数据。我得做点什么
const apiCall = async (url) => {
try {
const { data } = await axios.get(url);
return [url, data];
} catch ({ response: { data } }) {
console.log('Error', data);
}
}
const [, call] = await validate('/api/root');
const data = await call;
有没有一种方法可以在一行程序中做到这一点,而不必访问呼叫,比如
const apiCall = async (url) => {
try {
const { data } = await axios.get(url);
return [url, data];
} catch ({ response: { data } }) {
console.log('Error', data);
}
}
const [, call] = await validate('/api/root');
const data = await call;
await(await validate('/api/root'))
?这是一个等效的一行程序:
const data = await (await validate('/api/root'))[1]
您可以将等待的函数放入参数中。大概是
const result=wait apiCall(
等待验证(),
网址
)
然后您可以在apiCall
中处理验证
或者,如果验证函数依赖于apiCall的结果,您也可以将其作为回调添加到apiCall中。这里的
数据是什么承诺?为什么调用方必须等待它,为什么不能在apiCall
(validate
?)内部解决它呢?啊,习惯于破坏结构而忘记正常访问属性和数组的危险:P@FelixKling不需要重构的旧代码,仅适用于。@Klaycon告诉我第一个代码块中的lolAreapiCall
和第二个代码块中的validate
是同一个函数吗?您可能需要编辑问题以澄清这一点。