async在await循环中使用是否有任何问题?我正在尝试循环遍历文件数组和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这样的高阶函数,所以我只是想问一下这是否有任何问题.
我正在尝试遍历地址列表并通过 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 密钥。任何帮助是极大的赞赏。