如何创建一个永远不会resolve的async函数?
创建永远不resolve的async函数
我们可以通过两种简单方式实现和new Promise(() => {})完全相同效果的async函数:
方法一:直接返回永不resolve的Promise
async函数的返回值会被自动包装为Promise,但如果直接返回一个Promise对象,就会沿用该对象的状态。所以直接返回那个永不resolve的Promise即可:
async function neverResolve() { return new Promise(() => {}); }
方法二:await一个永不resolve的Promise
await会暂停async函数的执行,直到等待的Promise完成(resolve或reject)。如果等待的Promise永远不resolve,async函数就会一直处于暂停状态,其返回的Promise也永远不会被resolve:
async function neverResolve() { await new Promise(() => {}); }
这两种方式最终都会让neverResolve()返回一个始终处于pending状态、永远不会变为fulfilled或rejected的Promise,和你给出的原生Promise写法效果完全一致。
内容的提问来源于stack exchange,提问作者Phil Kang
相关产品推荐
相关产品推荐

