Javascript 这个节点/es6代码的输出是什么?为什么?
我在一份工作申请中被提出了这个编码问题,我想学习和理解,因此这里是编码问题,然后我将提供我的解释,并请so社区详细说明/纠正我的解释:Javascript 这个节点/es6代码的输出是什么?为什么?,javascript,node.js,Javascript,Node.js,我在一份工作申请中被提出了这个编码问题,我想学习和理解,因此这里是编码问题,然后我将提供我的解释,并请so社区详细说明/纠正我的解释: async function someFunction() { console.log('someFunction'): } console.log('start'); someFunction(); console.log('end'); 在我看来,这里的输出可以说是不可预测的,现在的顺序,仅仅是因为我们知道someFunction的实现从控制台开
async function someFunction() {
console.log('someFunction'):
}
console.log('start');
someFunction();
console.log('end');
在我看来,这里的输出可以说是不可预测的,现在的顺序,仅仅是因为我们知道someFunction
的实现从控制台开始。log
将是:
- 开始
- 某些函数
- 结束
async someFunction时的wait
关键字该函数仍将异步执行。
我的推理是,尽管someFunction
是异步的并返回一个承诺,但someFunction的第一行执行将发生在console.log('end')之前。我不知道为什么很多开发者认为这些是很好的招聘问题,也许是这样。我只是发现这些问题都是骗人的,不是真实的世界。在现实世界中,将处理someFunction
返回的承诺,例如:
console.log('start');
await someFunction();
console.log('end');
我希望您能解释一下这个代码。这里的顺序是完全确定的,它总是
开始->一些函数->结束:
异步函数someFunction(){
log('someFunction');
}
console.log('start');
someFunction();
console.log('end')代码>此处的顺序是完全确定的,它始终是开始
->某些函数
->结束
:
异步函数someFunction(){
log('someFunction');
}
console.log('start');
someFunction();
console.log('end')代码>它是完全确定的-异步函数
s将在第一次等待时停止。因为没有任何函数,所以它基本上与普通函数相同。您可以在浏览器的控制台中运行此函数,并查看确切的答案。可能存在许多实际的async
函数的副本,这些函数都是不需要等待的。事实上,你不能在顶级范围内等待
(但你可以然后它)。@BrianOgden是等待
的实际例子。如果执行result=wait getResult();array=array.concat(result)
这与array=array.concat(wait getResult())
不同,即使通常内联变量也不会有什么不同。更一般地说,myVar=myVar+await getResult()也会有同样的问题。
-任何变量的变异和它发生时的不同计时都会导致不同的结果。这是完全确定的-异步函数
将在第一次await
时停止。因为没有任何函数,所以它基本上与普通函数相同。您可以在浏览器的控制台中运行此函数,并查看确切的答案。可能存在许多实际的async
函数的副本,这些函数都是不需要等待的。事实上,你不能在顶级范围内等待
(但你可以然后它)。@BrianOgden是等待
的实际例子。如果执行result=wait getResult();array=array.concat(result)
这与array=array.concat(wait getResult())
不同,即使通常内联变量也不会有什么不同。更一般地说,myVar=myVar+await getResult()也会有同样的问题-任何改变变量的事情以及它发生的不同时间都会导致不同的结果。