如何将异步函数转换为匿名异步函数?

问题描述 投票:0回答:1

我很难记住如何使用 Node.js 进行方法链接。 这是一些示例代码,其中包含我无法轻松提取底层逻辑的注释。由于对所提供的代码的反馈与最初提供的内容不够适用,因此已对此进行了编辑添加。

const promise1 = new Promise((resolve, reject) => {
  for (const entry of Object.keys(data)) {
      // doing actual async things
  }
  resolve('Success!');
});

promise1.then((value) => {
  console.log(value);
  // Expected output: "Success!"
});

但是当我尝试将其转换为匿名函数时,我得到了

Error: (intermediate value).then is not a function
。我已经尝试过
async
并改变了我的包围,但我似乎无法再回忆起如何设置它。

(
//async 
(resolve, reject) => {
  for (const entry of Object.keys(data)) {
      // doing actual async things
  }
  resolve('Success!');
}).then((value) => {
  console.log(value);
  // Expected output: "Success!"
});

如何进行匿名方法链?

node.js async-await es6-promise anonymous-function method-chaining
1个回答
0
投票

您需要返回一个 Promise 才能使其可链式。 有些函数自己完成此操作,例如 fetch()

不匿名:

new Promise((resolve, reject) => resolve('Promise resolved'))
  .then((res) => {
    console.info(res);
    return res;
  })
  .then((res) => res + ' 1')
  .then((res) => {
    console.info(res);
    return res;
  })
  .then((res) => res + ' 2')
  .then((res) => {
    console.info(res);
    return res;
  })
  .then((res) => res + ' 3')
  .then((res) => {
    console.info(res);
    return res;
  });

匿名者:

(new Promise((resolve) => resolve('One')))
  .then(res => console.info(res));

© www.soinside.com 2019 - 2024. All rights reserved.