当前位置: 首页 > 面试题库 >

如何同步确定JavaScript Promise的状态?

云煌
2023-03-14
问题内容

我有一个纯JavaScript Promise(内置实现或poly-fill):

var promise = new Promise(function (resolve, reject) { /* ... */ });

根据规范,Promise可以是以下之一:

  • “解决”和“解决”
  • “解决”和“拒绝”
  • “待定”

我有一个用例,希望同步查询Promise并确定:

  • 承诺解决了吗?

  • 如果是这样,承诺是否得到解决?

我知道我可以#then()用来安排Promise更改状态后异步执行的工作。我不是问怎么做。

这个问题具体是关于 对Promise状态的同步询问 。我该如何实现?


问题答案:

没有用于本机JavaScript承诺的此类同步检查API。 凭本地承诺是不可能做到这一点的。规范没有指定这种方法。

Userland库可以做到这一点,如果您要针对特定​​的引擎(例如v8)并有权访问 平台代码 (即可以在 core中
编写代码),则可以使用特定的工具(例如私有符号)来实现这一目标。 。这是非常具体的,但不是在用户领域。



 类似资料:
  • 我试图确定查询中的“完整”或“不完整”值,但我需要引用两个不同的列来确定。 例如-我有一个货件有4个事件。在数据库中,我有以下列。 “cs_event_count”与“cs_completed” Event count告诉我事件总数,Completed告诉我这些事件中有多少已经完成。 我希望我的查询显示如下内容 如果“Event Count”值等于“Completed”值,则为“Complete”

  • 在不消耗太多cpu的情况下,我无法定期同步多个线程。 我有一个主线程和几个计算线程,它们都以以下形式出现: 目前,我让我的线程等待彼此循环std::this_thread::yield()指令,并在原子共享标志上设置一些条件。它可以工作,但是这些循环非常消耗CPU。 必须有另一个解决方案,可能是使用互斥和条件变量,但我是新手,我所有的尝试都会导致失败。。。 有人有主意吗?谢谢你的帮助。

  • 问题内容: 我有一类通用的代码是线程安全的。 该类中的方法之一是抽象的,需要针对不同的实现重写。 我需要确保或至少向其他开发人员标记此方法的所有实现都必须是线程安全的。 做这个的最好方式是什么? 是否有关键字或注释可达到此目的? 我已经尝试过了,但是不允许使用关键字组合。 问题答案: 您不能直接这样做。您可以做的一件事是将方法具体化,但是调用一个抽象方法: 这样,doFoo()将始终*在foo()

  • 我用webpack建立了一个浏览器umd库。 我正在侦听输入文件的onchange事件。当有人提交图像/文件时,它会将其转换为base64。我试图让它尽可能看起来不那么明显,所以我使用了promises和wait/asynchttps://blog.shovonhasan.com/using-promises-with-filereader/. 但是,有一个问题-当我调用convertToBase

  • 我有一个带有搜索面板的网页。搜索面板有几个输入字段:id, size,... 我想要的是当用户设置搜索值(例如:id=123和size=45)并按下搜索按钮时: Redux reducer中的searchState应更新为新的搜索值(id=123,size=45) URL应更改为“http://mydomain/home?id=123 另一方面,如果用户将URL更改为超文本传输协议://myDom

  • 在EJB3.1中,在无状态EJB中有一个同步块可以吗? 同步块用于在出现连接错误时更新连接。