JavaScript异步函数进程

JavaScript异步函数进程,javascript,function,asynchronous,synchronous,Javascript,Function,Asynchronous,Synchronous,fetchAssets()是一个异步JavaScript函数。有人能给我解释一下下面的代码是如何工作的吗 var x = 5; this.fetchAssets() .then(() => {navigate('Auth');}) .catch(error => console.error(`Error while loading: ${error.stack}`)); var y = 6; 它是这样工作的吗 1:var x=5被执行。当这一切结束时#2开始 2:调用fetchAs

fetchAssets()是一个异步JavaScript函数。有人能给我解释一下下面的代码是如何工作的吗

var x = 5;
this.fetchAssets()
.then(() => {navigate('Auth');})
.catch(error => console.error(`Error while loading: ${error.stack}`));
var y = 6;
它是这样工作的吗

1:var x=5被执行。当这一切结束时#2开始

2:调用fetchAssets()

3:执行变量y=6

4:每当fetchAssets返回时,我们导航到“Auth”


还是在执行
var y=6
之前等待fetchAssets()完成?

您的猜测完全正确。您可以通过添加一些
console.log来测试您的假设,并查看它们的日志顺序。

不完全如此。以下是更准确的版本:

  • 执行var x=5
  • 调用
    fetchAssets()
  • .then()
    fetchAssets
  • 的返回值调用
    .catch()
    。然后
  • 执行变量y=6
  • 只要解析了
    fetchAssets
    返回的承诺,就会调用
    navigate()
  • 尤其是这一部分要么是错误的,要么就是表达得不好:

    每当fetchAssets返回时,我们导航到“Auth”


    fetchAssets
    在分配给
    y
    之前立即返回。函数总是同步返回。

    您是否尝试过运行代码并单步执行以找到答案?您做得对:x被分配,fetch开始,y被分配,包含此代码的函数立即返回所有这些。一段时间后,传递给
    的函数被执行。