以下代码是否保证输出HERE
?
var p = new Promise(() => console.log("HERE"))
(即var p = new Promise(fn)
是否始终执行fn
如果永远不会调用p.then(…)
来对结果执行某些操作?)
更具体地说,在服务工作者的上下文中,如果我调用Cache.delete()
但从不在返回值上调用.then()
(或者我丢弃返回值),则保证缓存条目是删除?
答案 0 :(得分:5)
是的,保证。 specification of Promise
有此步骤将始终进行评估:
- 让完成为Call(执行者,未定义,«resolvingFunctions。[[Resolve]],resolvingFunctions。[[Reject]]»)。
醇>
其中executor
是您传递给Promise
构造函数的地方,而Call会导致该代码正在运行。这一切都发生在Promise
甚至返回到您的p
变量之前。
答案 1 :(得分:2)
正如詹姆斯所说,保证将调用该函数。虽然这并不能保证缓存条目被删除!
如果删除了缓存条目,则必须检查承诺解析的值(true
,否则为false
。