Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 这个节点/es6代码的输出是什么?为什么?_Javascript_Node.js - Fatal编程技术网

Javascript 这个节点/es6代码的输出是什么?为什么?

Javascript 这个节点/es6代码的输出是什么?为什么?,javascript,node.js,Javascript,Node.js,我在一份工作申请中被提出了这个编码问题,我想学习和理解,因此这里是编码问题,然后我将提供我的解释,并请so社区详细说明/纠正我的解释: async function someFunction() { console.log('someFunction'): } console.log('start'); someFunction(); console.log('end'); 在我看来,这里的输出可以说是不可预测的,现在的顺序,仅仅是因为我们知道someFunction的实现从控制台开

我在一份工作申请中被提出了这个编码问题,我想学习和理解,因此这里是编码问题,然后我将提供我的解释,并请so社区详细说明/纠正我的解释:

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()也会有同样的问题-任何改变变量的事情以及它发生的不同时间都会导致不同的结果。