【问题标题】:Can I return a resolved promise using just async in JS?我可以在 JS 中仅使用异步返回已解决的承诺吗?
【发布时间】:2021-10-01 08:15:28
【问题描述】:

我看到将async 放在 JS 函数前面会返回一个 Promise。

我现在拥有的:

    async function asyncTest(p) {
        return p;
    } 

    let www = asyncTest(1)
    console.log('www ', www); // returns Promise {<fulfilled>: 1}, see image

我想知道我是否可以在async 中使用它来解决和拒绝,就像典型的new Promise((resolved, rejected).... 一样

我想做的事:

    async function asyncTest(p, (resolved, rejected)=>{

      resolved(p);

    }) 

    let www = asyncTest(1)
    console.log('www ', www); // I want it to return 1

这可能吗?

【问题讨论】:

  • async 函数 always 返回承诺(new Promise((resolve, reject) =&gt; ...) 也是如此),如果没有 await 或 @,您无法以某种方式重新同步它以获取值987654331@.
  • 我不明白你想要什么。首先你承认async 函数总是返回一个promise 对象,但是你希望www 成为一个promise 对象??
  • 如果你不想返回一个promise,写一个普通的函数来创建一个promise并调用resolve()本身。
  • 如果你想生成一个异步结果,那么那个结果将在未来可用,你不能指望它可用现在。

标签: javascript async-await promise callback es6-promise


【解决方案1】:

我想知道我是否可以在async 中使用它来解决和拒绝,就像典型的new Promise((resolved, rejected)… 一样

没有。 async 函数不为您提供回调来解决/拒绝承诺,它只为您提供await。您可以使用

重新创建Promise.resolvePromise.reject
async function resolve(x) { return x; }
async function reject(x) { throw x; }`

但就是这样。给promisify a callback API,你always need to use the new Promise constructor

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2021-05-25
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多