问题描述:
一个异步函数调用另一个异步函数时,内部的函数一会儿报错fun is not defined,有时又不报错。
解决思路:
一般出现这种情况,说明我们的引入方式没错,有时不报错,说明我们的用法是对的。导致这一问题的根本原因是两个异步函数的执行时间问题。
例如,
function a(){
b();
}
假如a和b都是异步函数,a执行完成需要20ms,而b执行完成只需要15ms,这时,当a还没执行完成时调用了b函数,结果就是找不到b函数了;
有时a执行的又要快一点,变成16ms完成,b执行慢一点刚好17ms,就不会报错了;
解决办法:
让b延时几毫秒执行。
如下:
function a(){
setTimeout(()=>{
b();
},10)
}
具体延时多少,可以通过console.time();和console.timeEnd();来分别测出两个函数执行完成需要的时间,可以多测几次,时间会有波动。