承诺对象系统为了保持链式操作,then返回的总是另一个promise,then源码中最后是return result.promise;,所传入的回调的返回值也只是被传入了result.resolve()中。 因此除非改then方法或添加方法(但关系到值的获得以及context),不然不能改变返回值。 我觉得倒不如将value的赋值放在then的回调里面好些。
如何正确获得Promise方式后then返回值是值的本身而不是一个Promise对象?我通过Promise方式把一个wx.request()的异步API封装好,示例代码大概如下: getdata:function(){ return new Pormise(res,rej){ wx.request({ .... success:function(e){res(e.data)}, // e的值为一个对象{msgcode:1,data:1} fail:function(error){rej("获取失败!")} }); }; }; 调用: var value=getdata().then(function(e){ console.log(e); // 打印结果显示:1 return e; // 返回给变量value=Promise对象(情况如下图,isLike就是返回的Promise对象) [图片] },function(error){}); 请问为何我在上述的return e中获取不到跟打印console(e)同样的值?是哪里出错了?先感谢帮忙!
2020-05-15