广告屏react-native项目
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 

71 rinda
1.6 KiB

  1. export default class HttpUtil {
  2. /**
  3. * 利用 Promise 的 get 方式请求
  4. * @param url
  5. * @returns {Promise}
  6. */
  7. static get(url) {
  8. request = new Promise((resolve, reject) => {
  9. fetch(url, {
  10. method: 'GET',
  11. headers: {
  12. 'Accept': 'application/json',
  13. 'Content-Type': 'application/json'
  14. }
  15. })
  16. .then(response => response.json())
  17. .then(result => resolve(result))
  18. }).catch(e => reject(e.message));
  19. const timeoutRequest = new Promise((resolve, reject) => {
  20. setTimeout(reject, 30000, 'Request timeout');
  21. });
  22. return Promise
  23. .race([request, timeoutRequest])
  24. .then(res => {
  25. return res
  26. }, m => {
  27. throw new Error(m);
  28. });
  29. }
  30. /**
  31. * 利用 Promise 的 post 方式请求
  32. * @param url
  33. * @param params
  34. * @returns {Promise}
  35. */
  36. static post(url, params) {
  37. request = new Promise((resolve, reject) => {
  38. fetch(url, {
  39. method: 'POST',
  40. headers: {
  41. 'Accept': 'application/json',
  42. 'Content-Type': 'application/json'
  43. },
  44. body: JSON.stringify(params)
  45. }).then(response => response.json())
  46. .then(result => resolve(result))
  47. }).catch(e => reject(e.message));
  48. const timeoutRequest = new Promise((resolve, reject) => {
  49. setTimeout(reject, 30000, 'Request timeout');
  50. });
  51. return Promise
  52. .race([request, timeoutRequest])
  53. .then(res => {
  54. return res
  55. }, m => {
  56. throw new Error(m);
  57. });
  58. }
  59. }