ウィジェットがユーザー情報を取得できない問題
2186 ワード
ウィジェットがユーザー情報を取得できない問題
1.はじめに
ウィジェットはjsコードで書かれているので、私はjsが特によく勉強していないので、最初はjsがjavaと1行、1行1行の実行だと思っていましたが、後で気づいたのですが、全くそうではありません.だから、時々、ユーザー情報とopenIdを取得するときに、バックグラウンドにリクエストを送るので、まだデータが戻っていないことを要求する可能性があります.ウィジェット側はすでに値をつけています.undifineは1つしか得られません.とても心配しています.それからjsコードをたくさん見てから、この問題を処理する良い方法があることに気づきました.コールバック、要求が戻ってきたら、コールバックして、データを得ることができます.実は微信の公式ドキュメントもコールバック関数を追加することを説明していますが、私はこのコールバック関数を見てもどのように使うか分かりません.インターネットの検索もすべて微信のドキュメントを剽窃して、新しい意味がありません
2.app.jsでのユーザ情報の取得
3.OpenIdを取得した場所でコールバックの呼び出しを追加する
4.後言
小さなプログラムの穴は確かに多いですが、ドキュメントをよく読むと解決できるので、ドキュメントをたくさん読みましょう.
1.はじめに
ウィジェットはjsコードで書かれているので、私はjsが特によく勉強していないので、最初はjsがjavaと1行、1行1行の実行だと思っていましたが、後で気づいたのですが、全くそうではありません.だから、時々、ユーザー情報とopenIdを取得するときに、バックグラウンドにリクエストを送るので、まだデータが戻っていないことを要求する可能性があります.ウィジェット側はすでに値をつけています.undifineは1つしか得られません.とても心配しています.それからjsコードをたくさん見てから、この問題を処理する良い方法があることに気づきました.コールバック、要求が戻ってきたら、コールバックして、データを得ることができます.実は微信の公式ドキュメントもコールバック関数を追加することを説明していますが、私はこのコールバック関数を見てもどのように使うか分かりません.インターネットの検索もすべて微信のドキュメントを剽窃して、新しい意味がありません
2.app.jsでのユーザ情報の取得
onLaunch: function () {
//
var that = this ;
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
//
wx.login({
success: res => {
// res.code openId, sessionKey, unionId
var code = res.code;
var user =null;
// wechatUtil
wechatUtil.req("/user/login", { "code": code }, function (res) {
console.log(" openId ");
console.log(res);
if (res.resultCode == 200) {
that.globalData.user = res.resultContent;
user = res.resultContent;
// this.setData({
// user: res.resultContent
// });
// that.data.user = res.resultContent;
} else {
console.log(" openId ,msg:" + res);
}
// getUserInfo , Page.onLoad
// callback
if (that.userCallback) {
that.userCallback(res)
}
});
}
})
},
3.OpenIdを取得した場所でコールバックの呼び出しを追加する
onLoad: function () {
var that = this;
if (app.globalData.user && !JSON.stringify(app.globalData.user)){
that.setData({
user: app.globalData.user
})
}else{
app.userCallback = res =>{
console.log("----------------------------res="+res);
if(res != null){
this.setData({
user: res.resultContent
})
}
}
}
}
4.後言
小さなプログラムの穴は確かに多いですが、ドキュメントをよく読むと解決できるので、ドキュメントをたくさん読みましょう.