Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何等待在数组中返回的承诺而不首先进行分解?_Javascript - Fatal编程技术网

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告诉我第一个代码块中的lolAre
apiCall
和第二个代码块中的
validate
是同一个函数吗?您可能需要编辑问题以澄清这一点。