执行结果为:
taskReducer第1次执行时,promise=0;action为asyncTask,参数为0,taskReducer中打印出的promise为0,res为0,taskReducer返回action(res),即 asyncTask(0),输出
task 0 done
,同时asyncTask(0)返回1,说明第一次执行taskReducer返回值为1;
taskReducer第2次执行时,promise打印出的值为什么是Promise对象,Promise对象是哪里来的?为什么不是上次taskReducer的返回值1?
taskReducer第2次执行时,promise打印出的值为什么是Promise对象,而res = await promise;res为什么打印出1?
因为taskReducer是异步函数async,而reduce是同步执行的,所以说taskReducer未返回之前,reduce已经执行完成了,而console.log('promise: '+promise);是taskReducer中的同步代码,因此也会同步自行,而reduce执行时必须用到上次taskReducer的返回值,而taskReducer又不能立即返回,所以taskReducer就默认返回Promise对象?等到taskReducer中 let res = await promise执行完成有返回值的时候,正好输出res?
小怪兽爱吃肉
相关分类