【问题标题】:Converting Promise to non promise in module export在模块导出中将 Promise 转换为非 Promise
【发布时间】:2022-10-13 22:02:48
【问题描述】:

有什么方法可以让非异步函数返回已解析的 Promise 值?或者异步返回非承诺?

我有一个模块 A,我想在模块 B 中动态导入它。由于它是动态的,它会产生一个承诺。从模块 B 我想将它的一部分(adapterPromise 的已解析部分)公开为非 Promise 对象。

const foo = async () => {
  return await adapterPromise;
};

export const MyAdapter = () => foo(); // I don't want this to be a Promise

我遇到的问题是,由于foo 是异步的,所以它总是会产生一个Promise,我想避免这种情况(原因是MyAdapter 包含我想反复调用的函数)据我所知,同一个 Promise 不应该被多次解决)。

可以使用顶级等待来执行此操作

export default await adapterPromise;

我很好奇这是否是唯一的方法。

【问题讨论】:

标签: javascript


【解决方案1】:

没有办法return Promise 值。但是你绝对可以在回调函数中使用它

function foo (callback) {
  var p = ...; // a promise
  p.then(function(a) {
    callback(a);
  });
}

【讨论】:

    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 2017-01-12
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2017-07-28
    相关资源
    最近更新 更多