推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
node

微信 wx.config 如何判断是否成功

  •  
  •   node · Dec 26, 2016 · 7731 views
    This topic created in 3599 days ago, the information mentioned may be changed or developed.

    微信 js-sdk 文档里写 wx.config 配置完成后的回调函数可以用 wx.ready 和 wx.error 传入,但好像 wx.ready 传入的回调无论成不成功都会被调用,也就是说如果失败的话 wx.error 传入的函数和 wx.ready 传入的函数都会被执行一遍。那这样的话想只在成功后才执行的回调函数该放在哪儿呢?

    9 replies  •  2016-12-26 18:21:42 +08:00
    lazypu
    lazypu
    Dec 26, 2016
    1
    有 debug 模式可以.
    2zH
    2zH
    Dec 26, 2016
    2
    wx.config 的 debug 设置为 true ,执行后无论成功或失败都会有一个带提示信息的 alert
    jimliang
    jimliang
    Dec 26, 2016
    3
    可以用一个 Promise 来保存状态,这样有两个好处, 一, Promise 来处理异步 二, Promise.state 状态唯一不可修改
    ```
    var p
    function checkWx() {
    return p || (p = new Promise((resolve, reject) => {
    if (!navigator.userAgent.match(/micromessenger\/(\d+\.\d+\.\d+)/i)) {
    return reject(new Error())
    }
    wx.error(res => reject(new Error(res.errMsg)));
    // ready 放在后面,好像无论如何 ready 都会执行
    wx.ready(() => resolve(wx));
    }))
    }
    ```
    2zH
    2zH
    Dec 26, 2016
    4
    抱歉……没看仔细
    node
    node
    OP
    Dec 26, 2016
    5
    @jimliang
    坑爹的是它好像是先执行 ready 的,再执行 error 的,这样的话 resolve 先于 reject 执行了, reject 还会起作用吗?另外的话就是我现在是用 async 的时候碰到了这个问题, async 同一个 callback 不能调用两次,这样的话有解吗?

    @linxl @2zH
    debug 模式能解决这个问题吗?我是想做到
    wx.config(...);
    成功: successCallback();
    失败: failCallback();
    像这样的, debug 模式能实现?
    jimliang
    jimliang
    Dec 26, 2016❤️1
    6
    @node 我这个用在正式环境很久了,哪个先调先执行哪个, ready 是每次调用都会执行
    node
    node
    OP
    Dec 26, 2016
    7
    @jimliang
    明白了,谢谢啊!还有就是想问一下刚才提到的 async 两次调用同一个 callback 会报错,这个的话该怎么办呢?
    jimliang
    jimliang
    Dec 26, 2016❤️1
    8
    @node Promise 的状态是一次性的,一旦 resolve 或者 reject 后,再次调用就无效了。
    node
    node
    OP
    Dec 26, 2016
    9
    @jimliang
    promise 我倒没试过这种情况,但 async 的确会报错的,因为参数的引用还是在的。我现在整个结构已经是 async 的了,改成 promise 估计不太行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1374 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:24 · PVG 05:24 · LAX 13:24 · JFK 16:24
    ♥ Do have faith in what you're doing.