【uniapp】promise中resolve()与reject()的用法
resolve(data)将这个promise标记为resolved,然后进行下一步then((data)=>{//do something}),resolve里的参数就是传入then的数据。当执行到 reject() 这个方法的时候,就改变 promise的状态为 reject,当promise为reject就可以.catch()这个promise了。执行到 resolve()这个方法的时候,就
封装request时使用到了 Promise,以前只了解了promise的两个方法.then()与 .catch(),完全没研究过这两个参数的问题。
使用自己封装的request来调用接口:
clickMe() {
//三个入参参数
const data = {
key: '7d06a110e9e20a684e02934549db1d3d',
type: 'a',
api: 6
}
//发送请求
sentence(data).then(res => {
// this.one_sentence = res
console.log(res);
}).catch(res => {
console.log("erro");
})
}
然后发现入参也正确,但是没有返回值,明明封装的时候success中的if分支正确时最后return过了,最后才发现没有使用resolve()与reject()。
结合上下两行对比参看:
1.resolve(res_data.data) 为返回请求成功后的data数据,以便在上边的then()中能够拿到数据。
2.reject(err)为请求失败后可返回自定义的cath()中的内容。
return new Promise((resolve, reject) => {
wx.request({
url: url,
method: method,
data,
header: {
'Content-Type': 'application/json',
},
timeout: 10000,
success(result) {
// console.log(result, '成功')
const res_data = result.data;
// statusCode == 200
// code==0 就证明成功 返回状态码正常
if (result.statusCode == 200 && res_data.code == 0) {
//执行到 resolve()这个方法的时候,就改变promise的状态为resolved,
//当状态为 resolved的时候就可以执行.then()
resolve(res_data.data);
if (showLoading) {
// 隐藏加载中
tips.loaded();
}
console.log('成功了');
return;
} else {
tips.toast('数据加载超时,请点击重试')
//当执行到 reject() 这个方法的时候,就改变 promise的状态为 reject,
//当promise为reject就可以.catch()这个promise了
reject(result);
if (showLoading) {
// 隐藏加载中
tips.loaded();
}
console.log('失败了');
}
},
// 请求失败后的逻辑
fail(err) {
// 隐藏加载中
tips.loaded();
tips.toast('请求超时,请重新尝试')
console.log('可能超时了')
reject(err);
}
})
})
以下总结知识点转自CSDN博主「Missy Peng」
原文链接:https://blog.csdn.net/Superman_peng/article/details/115444634
Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成 ,又称Fulfilled)和 Rejected(已失败)。
resolve(data)将这个promise标记为resolved,然后进行下一步then((data)=>{//do something}),resolve里的参数就是传入then的数据
执行到 resolve()这个方法的时候,就改变promise的状态为resolved,当状态为 resolved的时候就可以执行.then()
当执行到 reject() 这个方法的时候,就改变 promise的状态为 reject,当promise为reject就可以.catch()这个promise了
这两个方法可以带上参数,用于.then()或者 .catch() 中使用。他们的作用就是 用于改变promise的状态,因为状态改变了,所以才可以执行相应的.then()和 .catch()操作。
所有评论(0)