【问题标题】:How can I return a value from .then method of a promise? [duplicate]如何从 .t​​hen 的 promise 方法返回一个值? [复制]
【发布时间】:2020-06-05 14:08:37
【问题描述】:

在下面的 javascript 代码 sn-p(为 nodejs 编写)中,createDoc 函数返回一个承诺。履行承诺后,将调用传递给 .then 的处理程序。问题是我怎样才能使 .then 返回文档?根据文档, .then 返回一个承诺,但我真的在寻找它来返回文档。

 let p = createDoc(title).then(function (doc) {return doc;});

 //p is a promise, and not doc
 console.log(p);

访问传递给履行处理程序(在本例中为文档).then之外的值的正确方法是什么?

【问题讨论】:

  • 你能显示你的 createDoc 函数的代码吗
  • 在承诺中,你总是得到一个承诺作为回报。您将如何处理 doc - 这将提供一些关于如何进行的想法。

标签: javascript node.js promise


【解决方案1】:

做这样的事情,当promise解决时,doc的值将在p内

let p;
createDoc(title).then(doc => p = doc);

【讨论】:

  • @Nishant 是的,但这就是他想要的,他想要 p 中的解析值
  • 在createDoc之后可以访问p
【解决方案2】:

你可以使用 async-await,如果你想在 p 中有值而不是 promise

async function someFunction() {
    ...
    let p = await createDoc(title);
     console.log(p);

    ...
}

您所看到的是 Promise 调用链接的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 2014-10-21
    • 2019-03-02
    • 2017-09-05
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    相关资源
    最近更新 更多