承诺只是回归?

Use*_*842 5 promise typescript

我在目前正在使用的代码库中注意到以下内容,我不确定它的含义是什么:

public spinnerPromise: Promise<void> = new Promise<void>(() => { return; });

是否有理由拥有空洞的承诺?这让我想起了一个 setTimeOut(fn, 0),我想知道它是否有类似的效果.

谢谢

Tit*_*mir 5

编辑

正如@Bergi指出的那样,给定的承诺永远不会实现,因为没人会解决。因此,所承诺的承诺永远不会召集任何等待结果的人。

相当于a的承诺setTimeOut(fn, 0)为:

var spinnerPromise: Promise<void> = new Promise<void>(resolve => resolve());
Run Code Online (Sandbox Code Playgroud)

原版的

是的,效果是相似的。该Promise 规范要求即使Promise处于已完成状态,注册处理程序时也不会正确调用任何处理程序。仅当当前调用完成执行时,它将被调用。

spinnerPromise.then (()=> { /* Code called later */ });
// Code called after call to then 
Run Code Online (Sandbox Code Playgroud)

  • OP拥有的承诺永远不会进入实现状态。 (2认同)