【问题标题】:How can I return a separate value along with the result of a promise?如何返回一个单独的值以及承诺的结果?
【发布时间】:2022-11-05 00:44:39
【问题描述】:

我正在返回一个承诺,但我正在尝试返回一个字符串和一个承诺。有没有办法将两者联系起来没有必须从承诺中归还?

例如,如果我的输入是

[
  {
    keepme:"abcd",
    sql:"select top(1) * from X"
  }
]

我的目标是回归

[
  {
    keepme:"abcd",
    sql:"select top(1) * from X",
    resultOfPromise:[{columnA:1,columnB:2}]
  }
]

到目前为止,这是我的代码。它返回承诺,但不返回 abcd 值:

let qq=[{keepme:"abcd",sql:"select top(1) * from X"}]

async function myFunc(sql:string){
    return [{columnA:1,columnB:2}]
}

async function run(){
let prom=qq.map((qq) => myFunc(qq.sql));

    for (let p of await (Promise as any).allSettled(prom)) {
      console.log(p.value)
    }
}

run();

【问题讨论】:

    标签: javascript promise es6-promise


    【解决方案1】:

    您可以返回一个带有承诺结果的对象作为其属性之一:

    const getDataWithInputs = async (keepme, ...input) => {
      let data = await getData(...input);
      return {
        data,
        input,
        keepme
      }
    }
    

    并在调用它时:

    let prom = qq.map((qq) => myFunc(qq.keepme, qq.sql));
    

    此外,您应该始终用空格填充运算符。

    【讨论】:

      猜你喜欢
      • 2017-05-16
      • 2017-09-10
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多