如何正确获得Promise方式后then返回值是值的本身而不是一个Promise对象?
发布于 6 年前 作者 liangping 6051 次浏览 来自 问答

我通过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)同样的值?是哪里出错了?先感谢帮忙!

3 回复

getData: async function(){

  …

  let url = “http://dddf.com/dd;

  let obj = await that.testAsync( 1, url, data{…} ,1);

  console.log(obj);

},

是不是会得到真实的值??

getdata 的返回值就是 Promise,then 中返回是没有用的(只是在 Promise 执行完成时调用一下,返回值没有意义),只能在 then 回调中使用结果

要变成同步的写法只能用 async await

async function(){
  var value = await getdata();
}
回到顶部