相关疑难解决方法(0)

使用async/await和forEach循环

asyncawait循环中使用是否有任何问题?我正在尝试循环遍历文件数组和forEach每个文件的内容.

import fs from 'fs-promise'

async function printFiles () {
  const files = await getFilePaths() // Assume this works fine

  files.forEach(async (file) => {
    const contents = await fs.readFile(file, 'utf8')
    console.log(contents)
  })
}

printFiles()
Run Code Online (Sandbox Code Playgroud)

这段代码确实有效,但这可能会出错吗?我有人告诉我你不应该使用await这样的高阶函数,所以我只是想问一下这是否有任何问题.

javascript node.js promise async-await ecmascript-2017

864
推荐指数
24
解决办法
38万
查看次数

套接字使用 axios 挂断或请求从谷歌地理编码 api 获取数据

我正在尝试遍历地址列表并通过 Google Geocoding API 获取它们的经纬度坐标。这是我使用 axios 的代码

  list.forEach((item) => {
    item.address = item.address.replace(/\s{1}/g, '+');
    axios.get(`https://maps.googleapis.com/maps/api/geocode/json?address=${item.address}&key=${key}`)
      .then((result) => {
        res.push(result);
      })
  })
Run Code Online (Sandbox Code Playgroud)

我的问题是,无论如何,我似乎Error: socket hang up很少遇到此错误Error: read ECONNRESET。我知道各个 URL 是有效的(如果我对 URL 进行控制台记录并手动访问它们,我确实会得到预期的响应)但是当我运行我的代码时,我看到的都是错误。我也试过使用请求库,我得到了相同的结果。前几个请求工作没有错误,我偶尔会遇到速率限制错误,然后上述错误一遍又一遍地记录到控制台。

{ Error: socket hang up
    at TLSSocket.onHangUp (_tls_wrap.js:1130:19)
    at Object.onceWrapper (events.js:314:30)
    at emitNone (events.js:110:20)
    at TLSSocket.emit (events.js:207:7)
    at endReadableNT (_stream_readable.js:1047:12)
    at _combinedTickCallback (internal/process/next_tick.js:102:11)
    at process._tickDomainCallback (internal/process/next_tick.js:198:9) 
code: 'ECONNRESET' }
Run Code Online (Sandbox Code Playgroud)

注意:我使用 Google API 进行了付款设置,无论如何我都远远低于我的配额,所以我认为问题不在他们的尽头。我会提供一个工作示例,但我宁愿不共享我的 api 密钥。任何帮助是极大的赞赏。

javascript asynchronous request google-geocoding-api axios

5
推荐指数
0
解决办法
2028
查看次数