wx.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. var each = require('./each');
  2. var arrToMap = require('./arrToMap');
  3. var startWith = require('./startWith');
  4. var endWith = require('./endWith');
  5. var extend = require('./extend');
  6. var noPromiseMethods = arrToMap([
  7. 'stopRecord',
  8. 'getRecorderManager',
  9. 'pauseVoice',
  10. 'stopVoice',
  11. 'pauseBackgroundAudio',
  12. 'stopBackgroundAudio',
  13. 'getBackgroundAudioManager',
  14. 'createAudioContext',
  15. 'createInnerAudioContext',
  16. 'createVideoContext',
  17. 'createCameraContext',
  18. 'createMapContext',
  19. 'canIUse',
  20. 'startAccelerometer',
  21. 'stopAccelerometer',
  22. 'startCompass',
  23. 'stopCompass',
  24. 'onBLECharacteristicValueChange',
  25. 'onBLEConnectionStateChange',
  26. 'hideToast',
  27. 'hideLoading',
  28. 'showNavigationBarLoading',
  29. 'hideNavigationBarLoading',
  30. 'navigateBack',
  31. 'createAnimation',
  32. 'pageScrollTo',
  33. 'createSelectorQuery',
  34. 'createCanvasContext',
  35. 'createContext',
  36. 'drawCanvas',
  37. 'hideKeyboard',
  38. 'stopPullDownRefresh',
  39. 'arrayBufferToBase64',
  40. 'base64ToArrayBuffer'
  41. ]);
  42. function needToPromisify(name) {
  43. return (
  44. !noPromiseMethods[name] &&
  45. !startWith(name, 'on') &&
  46. !endWith(name, 'Sync')
  47. );
  48. }
  49. each(wx, function(fn, name) {
  50. if (!needToPromisify(name)) return;
  51. exports[name] = function(obj) {
  52. return new Promise(function(resolve, reject) {
  53. fn.call(
  54. wx,
  55. extend(obj, {
  56. success: function(res) {
  57. resolve(res);
  58. },
  59. fail: function(res) {
  60. reject(res);
  61. }
  62. })
  63. );
  64. });
  65. };
  66. });
  67. module.exports = exports;