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()完成?
答案 0 :(得分:2)
不完全是。这是一个更准确的版本:
var x = 5
被执行fetchAssets()
被称为.then()
的返回值上调用fetchAssets
.catch()
的返回值上调用.then
var y = 6
被执行fetchAssets
返回的承诺得到解决,就会navigate()
被调用特别是这部分是错误的,或者只是表达得不好:
每当fetchAssets返回时,我们就会导航到“验证”。
fetchAssets
在分配给y
之前立即返回。函数总是同步返回。
答案 1 :(得分:1)
您的猜测是完全正确的。您可以通过添加一些System.Runtime.InteropServices
并查看它们记录的顺序来测试您的假设。