Javascript Nodejs停止响应承诺
假设我有一个api,我需要从中收集一些数据Javascript Nodejs停止响应承诺,javascript,node.js,asynchronous,next.js,fetch-api,Javascript,Node.js,Asynchronous,Next.js,Fetch Api,假设我有一个api,我需要从中收集一些数据 const-fn=async()=>{ rootUrl=http://....' data=await(await-fetch(rootUrl)).json() moreData=wait Promise.all(data.map)(异步(elem)=> subData=await(await-fetch(elem)).json() subSubData=wait Promise.all(subData.map(async(Something))) S
const-fn=async()=>{
rootUrl=http://....'
data=await(await-fetch(rootUrl)).json()
moreData=wait Promise.all(data.map)(异步(elem)=>
subData=await(await-fetch(elem)).json()
subSubData=wait Promise.all(subData.map(async(Something)))
Subdata.x=subSubData
返回子数据
))
}
我使用如下函数
fn().then((data)=>{console.log('done')})
//or
await fn()
有时我得到日志,有时我没有。我想是因为承诺还没有解决。但是当我没有得到日志时,让我惊讶的是没有一个fetch抛出错误(应该假设我等待了10分钟左右)
我的问题是:
关于我之前问的问题的更多信息:你不太可能在未兑现承诺的数量上达到任何Nodejs限制。更有可能的情况是,出现了一些问题,一个承诺被拒绝了,但你没有看到拒绝 如果按照描述调用异步函数:
fn().then(x => console.log(x))
那么被调用函数由于拒绝的承诺而抛出的错误将对您不可见
您可以选择使用wait
调用异步函数,在这种情况下,承诺拒绝将生成错误:
try {
await fn(); //
} catch(e) {
// invoked if an error occurs
}
或者你可以联系自己的拒绝承诺处理程序,比如:
fn()
.then(x => console.log(x))
.catch(e => console.error('an error occurred: ' + e.message));
这将允许您看到被拒绝的承诺。您好!欢迎来到stackoverflow!你能提供一个有效的例子吗?拥有
某物
、数据
或子数据
无助于理解发生了什么。另外,在这里检查async/await的工作方式:数据和子数据有多大?当然,您可以用请求使网络过载。您还没有附加错误处理程序,因此承诺可能已经解决,但您不知道。您是否打算使用fn()。然后(something=>console.log(something))
<代码>fn().then((console.log(某物))
当然不起作用。数据大约1000,子数据大约1500。我与Wait一起使用它,这里我只是试图解释这个问题,我没有看到任何地方出现任何错误。我考虑了拒绝承诺的问题,所以我做了一个测试,当我不处理拒绝的承诺时,nodejs会向我显示警告。