在javascript中链接多个异步函数

在javascript中链接多个异步函数,javascript,async-await,Javascript,Async Await,我如何实现这种行为?我希望能够链接所有的方法,在这个例子中是一个接一个的加、减、乘、除,当我等待它们时,它应该返回与等待mongoose查询时相同的结果 我知道普通的计算不是异步的,但是想象一下这些方法是异步的——达到预期效果的正确代码是什么样子的?您可以返回一个对象,其中包含加法、减法等方法。当调用这些方法时,重新分配实例的一个内部属性,该属性保持承诺。在链的末尾,访问实例上的Promise属性: 类计算{ 构造器{ this.prom=Promise.resolvenum; } 阿达格{

我如何实现这种行为?我希望能够链接所有的方法,在这个例子中是一个接一个的加、减、乘、除,当我等待它们时,它应该返回与等待mongoose查询时相同的结果


我知道普通的计算不是异步的,但是想象一下这些方法是异步的——达到预期效果的正确代码是什么样子的?

您可以返回一个对象,其中包含加法、减法等方法。当调用这些方法时,重新分配实例的一个内部属性,该属性保持承诺。在链的末尾,访问实例上的Promise属性:

类计算{ 构造器{ this.prom=Promise.resolvenum; } 阿达格{ this.prom=this.prom.thenres=>res+arg; 归还这个; } 减去arg{ this.prom=this.prom.thenres=>res-arg; 归还这个; } 多码{ this.prom=this.prom.thenres=>res*arg; 归还这个; } } const getRes=async=>{ const res=等待新的计算10 .add30 .5 .倍数2 .毕业舞会; console.logres//打印结果 };
格特雷斯;你为什么要等待。这些函数是异步的吗?@hussain.codes是的,实际上我想弄清楚mongoose是如何链接其查询函数的,如排序、限制、选择等。。。。那么让我们假设所有这些函数都是异步的,现在我如何链接它们呢?
class Calc {
  constructor(num) {
    this.num = num;
  }

  add() {
    // code
  }

  subtract() {
    // code
  }

  multiply() {
    // code
  }

  divide() {
    // code
  }
}

const getRes = async () => {
  const res = await new Calc(10)
    .add(30)
    .subtract(5)
    .multiply(2);

    console.log(res) //prints the result
};

getRes();