疑问比较大
//把同步的任务转成异步任务
function createAsyncTask(syncTask){
return Promise.resolve(syncTask).then(syncTask=>syncTask());
//这函数作用是什么?将syncTask事件传进去转成promise对象,然后调用它的then方法,then方法的参数是syncTask事件本身,然后syncTask自调用?
}
createAsyncTask(()=>{
console.log('我变成了异步任务!!!');
return 1+1;
})
.then(res=>{ //这里为什么要再调用then方法???createAsyncTask不是已经调用了then方法?
console.log(res);
})
console.log('我是同步任务!')
正在回答
同学你好,
1、封装这个函数的作用就是将同步任务变成异步任务,因为promise中的resolve方法是异步执行的。
这里调用传入的方法,如果不调用,修改成同学那样,第一个‘我变成了异步任务!!!’是不能输出的。
2、这里的then是输出返回的结果:
如果没有返回promise的话,下面的then就会使用上一个返回的promise,参数res是传入的return结果。
3、同学的代码可以修改成这样:
可以如果不想在封装的方法中调用,可以在外面调用。
自己测试理解下,祝学习愉快!
我将代码转成如下的形式
function createAsyncTask(syncTask){
return Promise.resolve(syncTask);
}
createAsyncTask(()=>{
console.log('我变成了异步任务!!!');
return 1+1;
})
.then(()=>{
console.log('我变成了异步任务!!!');
return 1+1; //这里返回2,但是返回值并不是一个promise实例啊,为什么接下来还能调用then??
})
.then(res=>{
console.log(res);
})
console.log('我是同步任务!')
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星