为了账号安全,请及时绑定邮箱和手机立即绑定

在Promise中, 不管resolve在哪个位置, 都是最后才执行吗?

在Promise中, 不管resolve在哪个位置, 都是最后才执行吗?

九州编程 2019-03-20 22:19:36
在Promise中, 不管resolve在哪个位置, 都是最后才执行吗? 谁能讲讲里面的运行机制,或者分享个链接... 感谢! 代码如下:actions.getForbiddenFuncList = function(context){  return new Promise((resolve, reject) => {    serverUtils.getData(serverUtils.GETFORBIDDENFUNCLIST,null,(resData)=>{      if(resData.success){        resolve();        console.log('1')        context.commit('SETFORBIDEENFUNCLIST', resData)        console.log('2')        console.log('3')      }    });  })}mutations.SETFORBIDEENFUNCLIST = function (state, data) {    console.log('SETFORBIDEENFUNCLIST, 1');    // 业务逻辑,没有异步操作.....    console.log('SETFORBIDEENFUNCLIST, 2');}actions.initData = function(context,payload) {  actions.loadControl(context,{ show: true });  serverUtils.getData(serverUtils.GETBYID,{id: payload.id},function(data) {    if (data.success) {      actions.getForbiddenFuncList(context).then(() => {        console.log('a')        context.commit('INITDATA', data.data);        console.log('b')        actions.getQuestionData(context,data.data.questionUrl);        actions.checkSliceUpdate(context,payload);      });    }  });}运行结果:
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

不是resolve最后执行,是执行完这堆同步代码,才轮到event loop去检测microtask
Js 的事件循环

查看完整回答
1 反对 回复 2019-04-14
?
三国纷争

TA贡献1804条经验 获得超7个赞

查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 2436 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信