weex - 关于storage执行顺序的疑问
本文介绍了weex - 关于storage执行顺序的疑问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在发送请求前需要先获取本地存的token加到请求头中,结果发现在native端先执行了发送请求的部分,再执行获取本地token值的部分,不知道有没有好的解决方法
function get(url, params) {
return new Promise((resolve, reject) => {
let token;
storage.getItem('token', event => {
if (event.data) {
token = event.data;
console.log('执行了获取token');
}
});
console.log('request:', `${baseUrl + url}?${qs.stringify(params)}` +
'&token=' + token);
stream.fetch({
method: 'GET',
url: `${baseUrl + url}?${qs.stringify(params)}`,
type: 'json',
headers: {
'Authorization': `Bearer ${token}`
}
}, res => {
console.log('GET res :' + res)
if (res.ok && res.data && res.data.code == 0) {
resolve(res.data)
} else {
reject(res.data)
}
}, progress => {
console.log('get in progress:' + progress.length)
})
})
}
解决方案
getStorageItem =(key) => {
return new Promise((resolve, reject) => {
storage.getItem('token', event => {
let token = event.data;
if (token) {
resolve(token);
} else {
reject(event);
}
});
})
}
get =(url, params) => {
return new Promise((resolve, reject) => {
getStorageItem
.then((token) => {
console.log('request:', `${baseUrl + url}?${qs.stringify(params)}` +
'&token=' + token);
stream.fetch({
method: 'GET',
url: `${baseUrl + url}?${qs.stringify(params)}`,
type: 'json',
headers: {
'Authorization': `Bearer ${token}`
}
}, res => {
console.log('GET res :' + res)
if (res.ok && res.data && res.data.code == 0) {
resolve(res.data)
} else {
reject(res.data)
}
}, progress => {
console.log('get in progress:' + progress.length)
})
})
.catch((e) => {
console.log('获取token失败')
})
})
}
可以将获取token的方法封装成promise,上一个promise执行完执行下一个异步方法。
这篇关于weex - 关于storage执行顺序的疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文