Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否每个带有wait的ECMAScript运行时都有任何Thenable?_Javascript_Async Await_Es6 Promise - Fatal编程技术网

Javascript 是否每个带有wait的ECMAScript运行时都有任何Thenable?

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

下面是当前在节点、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)
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
函数的第一个参数。