官方大例子代码
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