在模块导出中将Promise转换为非Promise



非异步函数是否有任何方法可以返回解析的Promise值?或者异步返回非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;

我很好奇这是不是唯一的办法。

没有办法returnPromise值。但你肯定可以在回调函数中使用它

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

最新更新