[英]await promise return undefined?
export const wxreq = (config) => {
config.url = `${HTTP_HOST}${config.url}`;
return new Promise((resolve, reject) => {
return wepy.request(Object.assign(config, {
async success (res) {
// res is a promise, this promise is return {data: 123}
const responseFromMiddle = await res;
return resolve(responseFromMiddle.data);
},
fail () {
reject(new Error(`Request ${config.url} fail!`));
},
complete () {
resolve();
}
}))
})
};
在vuejs生命周期中
async onReady () {
cosnt res = wxreq(someCorrectConfig);
console.log(res); // undefined; need to be 123
}
我很好奇为什么没有定义res?请帮助〜如此困惑!thx〜
实施似乎有问题。 要调用wxreq,您需要在此之前使用await。 还将条件包装在try块中以捕获蚂蚁异常。
async onReady () {
try {
const res = await wxreq(someCorrectConfig);
console.log(res); // undefined; need to be 123
}
catch(err){
console.log(err)
}
}
试试这个:在async
函数中的异步操作之前使用await
async onReady () {
const res = await wxreq(someCorrectConfig);
console.log(res); // undefined; need to be 123
}
并消除承诺return
export const wxreq = (config) => {
config.url = `${HTTP_HOST}${config.url}`;
return new Promise((resolve, reject) => {
wepy.request(Object.assign(config, {
async success (res) {
// res is a promise, this promise is return {data: 123}
const responseFromMiddle = await res;
return resolve(responseFromMiddle.data);
},
fail () {
reject(new Error(`Request ${config.url} fail!`));
},
complete () {
resolve();
}
}))
})
};
我想你应该做
export async function wxreq(config) {
const res = await new Promise((resolve, reject) => {
wepy.request(Object.assign(config, {
url: `${HTTP_HOST}${config.url}`,
success: resolve,
fail: reject
});
});
return res.data;
}
但是在不知道什么是wepy
情况下很难说。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.