应用程序开发公司
软件开发

针对您的项目需求及预算规划量身制定方案

个体/中小企业/集团/政府机构/行业组织 了解详情 了解详情

微信小程序使用Promise实践

发布时间:2024-01-01 00:00 浏览次数:51

官方大例子代码


getUserInfo:function(cb){


var that = this


if(this.globalData.userInfo){


typeof cb == "function" && cb(this.globalData.userInfo)


}else{


//调用登入USB


wx.login({


success: function () {


wx.getUserInfo({


success: function (res) {


that.globalData.userInfo = res.userInfo


typeof cb == "function" && cb(that.globalData.userInfo)


}


})


}


})


}


},


昨天研究了一下微信小程序的例子,看到了熟识cb了。我们好不容易从cb迈向了Promise,如果研发小程序必须返回cb中,这就是我不能接受的,搞得我昨晚一晚上没睡好,今年晚一大早就至公司想要办法解决问题。


化解思路 1、轻易采用Promise,我先行了一下,就是可取的,但这受限于运转程序的浏览器。无法确保所有浏览器都积极支持Promise。 2、采用第三方库,bluebird,Q,Defrered等,这样可以不倚赖浏览器同时实现。 说道搞就搞,我最熟识的就是bluebird,于是先就在工程文件夹下继续执行


npm init


npm i bluebird --save


获得项目结构如下图


在App.js中载入


var Promise = require("node_modules/node_modules/js/browser/bluebird.js");


通过调试辨认出Promise为undfine,解决问题失利! 深入分析 难道真例如网上所说无法读取第三方JS?我真的必须不可能将,如果无法采用第三方程序,什么都依靠自己写下,辛苦都挨打。忽然想起一段代码


logs.js


var util = require('../../utils/util.js')


util.js


module.exports = {


formatTime: formatTime


}


如果能够在logs.js中导入util.js,就一定能够惹来第三方纸盒,只是我没搞清楚这个读取机制。看看上面的代码似的就是CMD。我想来想去,最终在浏览器辨认出了这个。


define("utils/util.js", function(require, module){var window={Math:Math}/*相容babel*/,location,document,navigator,self,localStorage,history,Caches;module.exports = {


formatTime: formatTime


}})


这就是下载读取后的代码,通过代码分析,总结出来如下经验: 1、原来小程序就是自己定义了一套读取机制,不是CMD也不是AMD,至有点与NG相同。 2、小程序可以为每个js文件提一个通辽,每个机内都减少一个window对象,所以在小程序中,window对象就是一个局部变量。 3、document对象不一定有值 4、require就是一个函数,module就是一个对象这点与CMD一至 再次尝试 必须在小程序中采用第三方纸盒,就必须修正读取头。当我关上个bluebird源码时,立马就愣住逼迫了,听不懂。所以就挑选了Q,这个直观些,先看看没修正之样的。


(function (definition) {


"use strict";


// This file will function properly as a