JavaScript异步函数过程

时间:2019-05-03 00:06:20

标签: 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:fetchAssets()被称为

3:执行var y = 6

4:每当fetchAssets返回时,我们都会导航到“验证”。

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

2 个答案:

答案 0 :(得分:2)

不完全是。这是一个更准确的版本:

  1. var x = 5被执行
  2. fetchAssets()被称为
  3. .then()的返回值上调用
  4. fetchAssets
  5. .catch()的返回值上调用
  6. .then
  7. var y = 6被执行
  8. 只要fetchAssets返回的承诺得到解决,就会navigate()被调用

特别是这部分是错误的,或者只是表达得不好:

  

每当fetchAssets返回时,我们就会导航到“验证”。

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

答案 1 :(得分:1)

您的猜测是完全正确的。您可以通过添加一些System.Runtime.InteropServices并查看它们记录的顺序来测试您的假设。