function getResponse() {
var stuff = []
for (let i = 0; i < length; i++) {
axios.get(url + i)
.then(res => res.forEach(item => {
stuff.push(item)
}))
}
// How do I return stuff from this function ?
}
console.log(getResponse())
我如何从这个函数返回东西?
你不能。就像“我想要明天的报纸”。那也不行。你必须等到第二天才能看报纸,或者在你的情况下,等到所有的数据到达浏览器。您不能直接返回数据,而是某个时候会交付数据的promise。在您的示例中,可以使用promise.all
将promise数组统一为解析为数组的promise:
function getResponse() {
const promises = [];
for (let i = 0; i < length; i++) {
promises.push(axios.get(url + i));
}
return Promise.all(promises)
.then(results => [].concat(...results));
}
所以现在如果你这样做:
console.log(getResponse())
getResponse().then(console.log);
问题内容: 有没有办法使javascript 关键字在函数外部起作用?我希望能够冻结整个调用堆栈(而不是仅冻结函数的其余部分),以便在特定的Promise返回值后可以恢复。令人遗憾的是,目前尚未确定或尚未实施类似这样的强大功能。我试图使nodent.js正常工作,但是由于我的自定义加载程序和动态功能,不幸的是不切实际。 问题答案: 如果您正在寻找黑客,而不是适当的基于诺言的并发解决方案,请看一下节
问题内容: 我在互联网上读过有关回调的信息,但就我而言我还是听不懂。 我具有此功能,并且在运行时会记录到控制台。但是,现在我需要在另一个功能中使用此响应,而我正在努力做到这一点。 这是我应该得到的地方:(这显然不起作用,因为它不等待响应。) 我真的很难把头放在回调上,我在这里盯着自己瞎了。 问题答案: 回调无法返回值,因为它们将要返回的代码已经执行。 因此,您可以做几件事。一个传递回调函数,异步函
问题内容: 在SO中多次问过这个问题。但是我还是收不到东西。 我想从回调中获得一些价值。请看下面的脚本进行澄清。 如果我尝试返回该值,则只是“未定义”。我遵循了SO的一些想法,但仍然失败。 那些是: 问题答案: 这是不可能的,因为您无法从同步方法内部的异步调用返回。 在这种情况下,您需要将回调传递给foo,该回调将接收返回值 问题是,如果内部函数调用是异步的,则所有“包装”此调用的函数也必须是异步
更新 我已经读了十几篇关于这个话题的文章,但没有一篇涉及到这个基本问题。我将在本文末尾列出一个参考资料部分。 原始帖子 我对函数的理解是,它返回一个promise。 MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function 在我的程序中,我可以编写如下内容: 我
问题内容: 我在自己的类中拥有所有异步调用,因此我不想将aync’ly设置为全局变量。为此,我想从我的asunc postProcess方法返回对象,例如字符串。 能做到吗? 下面是我类的一般结构,例如,我想从onPostExecute()返回一个字符串。我看到在其他地方提到了委托,但这似乎很混乱,确定有办法为类或方法提供返回类型吗? 问题答案: 像下面这样 和听众课 你可以这样打电话
问题内容: 我有一个发出异步请求的函数。我如何从中返回响应/结果? 我尝试从回调中返回值,以及将结果分配给函数内部的局部变量并返回该局部变量,但这些方法均未真正返回响应(它们都返回或变量的初始值为任意值) 。 使用jQuery函数的示例: 使用node.js的示例: 使用承诺块的示例: 问题答案: 在 一 中的Ajax代表 异步 。这意味着发送请求(或接收响应)已从正常执行流程中删除。在您的示例中