Javascript 是否每个带有wait的ECMAScript运行时都有任何Thenable?
下面是当前在节点、chrome、firefox中记录的Javascript 是否每个带有wait的ECMAScript运行时都有任何Thenable?,javascript,async-await,es6-promise,Javascript,Async Await,Es6 Promise,下面是当前在节点、chrome、firefox中记录的Yahtzee 正如你所看到的,甚至连承诺的原型都没有设定 const fake=新号码(1) fake.then=fn=>setTimeout(fn,0,'Yahtzee') 常量main=async()=>{ console.log(等待伪) } main(),一个新的承诺将被召唤,并用这个价值观来解决Promise.resolve与表格一起使用,因此它对wait 因此,上述内容相当于 const fake = new Number(1
Yahtzee
正如你所看到的,甚至连承诺的原型都没有设定
const fake=新号码(1)
fake.then=fn=>setTimeout(fn,0,'Yahtzee')
常量main=async()=>{
console.log(等待伪)
}
main(),一个新的承诺将被召唤,并用这个价值观来解决Promise.resolve
与表格一起使用,因此它对wait
因此,上述内容相当于
const fake = new Number(1)
fake.then = fn => setTimeout(fn, 0, 'Yahtzee')
const main = async () => {
console.log(await Promise.resolve(fake))
}
main()
它在对象上的位置。是的,这就是它应该如何工作的,它是按照规范那样实现的,不太可能改变。从技术上讲,您可以等待任何表达式<代码>常量main=async()=>{console.log(wait 3);};main()代码>将记录3。你为什么要这么做?那是另一个问题。:)@MikeMcCaughan,请注意等待的结果是“Yahtzee”,而不是1。我暂时添加了广告编辑,请告诉我是否正确。我试图遵循规范,但找不到指定的位置。在promisersolve
的哪个位置发生?是否是调用(promiseCapability.[Resolve]],未定义,«x»)
?如果是,那么在NewPromiseCapability
中的何处检查then
方法?一开始就很好地说明了该表如何与PromiseCellent一起工作!不过,我希望这一次能理解规范。描述是错误的:c表示它返回一个已解决的承诺。它不仅不总是一个已解决的承诺,而且它甚至可以拒绝:v@MihailMalostanidis可能您误解了@Bergi我对此表示怀疑,因为我链接到了promise.resolve()
静态方法,而不是executor
函数的第一个参数。