Javascript Nodejs停止响应承诺

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

假设我有一个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)))
Subdata.x=subSubData
返回子数据
))
}
我使用如下函数

fn().then((data)=>{console.log('done')})
//or
await fn()
有时我得到日志,有时我没有。我想是因为承诺还没有解决。但是当我没有得到日志时,让我惊讶的是没有一个fetch抛出错误(应该假设我等待了10分钟左右) 我的问题是:

  • 我是否以任何方式限制nodej
  • 是否有一个标志/设置可以让NodeJ拥有更多资源
  • 这个问题是否与我有太多的承诺有关,有时当一个承诺花费太长的时间时,其他事情就会出问题

  • 关于我之前问的问题的更多信息:

    你不太可能在未兑现承诺的数量上达到任何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会向我显示警告。