javascript wait 在调用者和被调用者中

标签 javascript node.js promise

我有一个名为:Test

的服务类

那个Test类有一个名为:getMe()

的函数

在该 getMe 函数中,我有 3 个等待语句,第二个需要第一个语句的答案,第三个需要第二个语句的答案。一个例子:

class Test {
   async getMe() {
      const res1 = await promise1;
      const res2 = await promise2(res1);
      const res3 = await promise3(res2);
      return res3;
   }
}

现在,在我的代码中的某个地方,我调用这个函数。

const a = new Test();
try{
  const res = await a.getMe();
}catch(err){
  console.log("error", err);
}

现在,由于在 getMe 函数中,我已经等待了 Promise,所以它没有被优化,因为创建了一个中间 Promise。阅读此内容:Difference between `return await promise` and `return promise`

所以,我想知道,如果在getMe函数中,我不应该写await进行优化并直接返回promise,那我的代码该怎么写呢?我不想在外部代码中调用 await Promise1、Promise2、Promise3,因为这样我就没有一个函数来处理最后的位,并且我的代码将会分散。

您的想法和建议是什么?

最佳答案

由于 getMe() 内的 Promise 相互依赖(例如 promise2 需要 promise1 的解析值作为输入参数),你不能真正优化这里的某些东西(除了直接返回最后一个 promise )。

如果它们不依赖于其他函数,您当然可以使用 Promise.all() 来非顺序地处理它们,返回其 promise 并在调用函数中等待此 promise 。

关于javascript wait 在调用者和被调用者中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62793601/

相关文章:

javascript - 为什么 Body.json() 返回一个 Promise?

javascript - promise 的循环。如何检测现在哪个 Promise 返回结果?

javascript - 如何从解析的 JSON 数据中获取特定值?

node.js - Expressjs+socket.io+express-session

node.js - 使用 keycloak.protect() 和 express.Router()

javascript - 从 promise 对象(服务器端)获取值到客户端 index.html

javascript - React typescript 不可分配给类型参数

javascript - 如何在 oi-select angularjs 中保持选中第一个选项

javascript - 如何在 Meteor 中使 Google 身份验证仅可用选项

node.js - 如何用 Jest 模拟 express.Application?