JavaScript 异步函数处理

JavaScript Asynchronous Function Process

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 returns,我们导航到'Auth'。

或者我们是否等待 fetchAssets( ) 完成后再执行 var y = 6

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

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

  1. var x = 5被执行
  2. fetchAssets()被称为
  3. .then()fetchAssets
  4. 的 return 值上调用
  5. .catch().then
  6. 的 return 值上调用
  7. var y = 6执行
  8. 每当由 fetchAssets 编辑的承诺 return 被解决时,navigate() 就会被调用

特别是这部分要么写错了,要么表达得不好:

Whenever fetchAssets returns, we navigate to 'Auth'.

fetchAssets return 秒后立即分配给 y。功能始终 return 同步。