weex - 关于storage执行顺序的疑问

查看:92
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆