相关疑难解决方法(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万
查看次数

等待Promise.all()和多个等待之间的任何区别?

之间有什么区别:

const [result1, result2] = await Promise.all([task1(), task2()]);
Run Code Online (Sandbox Code Playgroud)

const t1 = task1();
const t2 = task2();

const result1 = await t1;
const result2 = await t2;
Run Code Online (Sandbox Code Playgroud)

const [t1, t2] = [task1(), task2()];
const [result1, result2] = [await t1, await t2];
Run Code Online (Sandbox Code Playgroud)

javascript async-await

127
推荐指数
4
解决办法
7万
查看次数

等待多个并发等待操作

如何更改以下代码,以便触发异步操作并同时运行?

const value1 = await getValue1Async();
const value2 = await getValue2Async();
// use both values
Run Code Online (Sandbox Code Playgroud)

我需要做这样的事情吗?

const p1 = getValue1Async();
const p2 = getValue2Async();
const value1 = await p1;
const value2 = await p2;
// use both values
Run Code Online (Sandbox Code Playgroud)

javascript promise async-await es2017

31
推荐指数
2
解决办法
3820
查看次数

Javascript - 将异步回调传递给 Array.reduce()

我正在开发一个使用 Array.reduce 的函数,并且需要在 reduce 函数内添加异步 API 调用。这要求我对传入的回调使用异步函数reduce,因为我await在函数内部使用它来等待异步 API 调用。

我在正确编写归约时遇到一些问题。这是目前的情况(工作):

const result = records.reduce((array, currValue) => {
    //do stuff
    return array
}, [])
Run Code Online (Sandbox Code Playgroud)

这是我尝试将其更改为:

const result = records.reduce(async(array, currentValue) => {
    // do stuff
    someValue = await asyncCall(currentValue)
    array.add(someValue)
    return array
}, [])
Run Code Online (Sandbox Code Playgroud)

我收到的错误是“没有与此调用匹配的重载”。

这对我来说似乎很有意义,因为reduce接受返回数组的回调,而异步函数返回回调,而不是数组。但是当我阅读如何将异步函数传递到 .reduce 的其他示例时,它们似乎都只是将异步函数传递到 reduce 中,没有任何问题。

以下是我查看的几个链接:

https://advancedweb.hu/how-to-use-async-functions-with-array-reduce-in-javascript/

JavaScript 数组 .reduce 与 async/await

https://gyandeeps.com/array-reduce-async-await/

当我将归约函数声明为异步时,我得到了不匹配重载错误,这对我来说是有意义的。我不确定这对其他人来说是否有效。

javascript reduce asynchronous async-await

3
推荐指数
1
解决办法
2623
查看次数

异步减少返回承诺

我有一组对象,我必须在来自 async 函数的每个对象上添加一个属性

我正在做一个 Array.reduce 来迭代每个元素并只返回一个结果:一个具有新属性的对象数组。

我有这个

const res = await resultOne.reduce(async (users = [], user, i) => {
          let userName;
          try {
            let { name } = await names.getNames(user.id);
            userName = name;
          } catch (error) {
            throw error;
          }
          delete user.id;
          users.push({ ...user, userName });
          return users;
      }, []);
Run Code Online (Sandbox Code Playgroud)

但我收到消息

推送不是用户的功能

这是因为我认为是一个承诺。

我如何处理 areduce或 a 中的异步请求map

javascript reduce node.js ecmascript-6

2
推荐指数
1
解决办法
414
查看次数

为什么使用异步函数进行reduce只返回最后一个对象

我试图为数组中的所有水果设置随机数,并返回一个包含减速器中具有异步函数的所有水果的对象,但只返回数组的最后一个元素

(async () =>
  console.log(
    await [("apple", "banana", "orange")].reduce(async (o, fruit) => {
      const random_number = await new Promise((resolve) => setTimeout(() => resolve(Math.random()), 200));
      return { ...o, [fruit]: random_number };
    }, {})
  ))();
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
756
查看次数