美文网首页微信小程序微信小程序微信小程序开发者
微信小程序填坑-Android真机环境下的bluebird.js

微信小程序填坑-Android真机环境下的bluebird.js

作者: 一斤代码 | 来源:发表于2016-11-28 22:06 被阅读1889次

    今天,有朋友反映说,我的微信小程序的例子在andriod真机环境下运行出错,研究调试了半天,发现原来是使用的bluebird.js(Promise实现库)导致的。

    由于小程序框架最近的更新中移除了原生Promise的支持,喜欢使用Promise特性的开发者都会去引入其他的第三方Promise库来替代,bluebird.js是一个性能不错,特性又丰富的Promise实现库,所以大家都爱用。不过,由于bluebird.js中有些代码还是用到了document对象上的方法,在iOS的真机JavascriptCore环境中,貌似这些代码并不会被触及到,而在Android真机环境中,就会被执行到这块代码,导致了错误的发生。

    怎么办呢?找找其他能用的库吧,Promise实现库还算比较多的!NPM上搜搜就有。其中es6-promise是另一个被开发者下载使用比较多的库。通过npm命令我们可以很方便的将它下载下来:

    npm install es6-promise
    

    然后在下载下来的文件夹下,把dist目录中的es6-promise.js或es6-promise.min.js复制到你的微信小程序项目中,替换原来的bluebird.js就行啦,标准的Promise API一个都不会少。

    而且es6-promise的代码文件体积比bluebird小个3,4倍,也算一个好处吧(只能这么自我安慰了...哈哈)

    希望这篇文章能解决同样遇到这个问题的朋友。

    相关文章

      网友评论

      • XanaHopper:最近遇到了极个别的iPhone6 Plus iOS 10用户出现Promise部分不往下走的情况……就是使用es6-promise……博主有遇到过么?
        一斤代码:@XanaHopper 要不你试试使用自带的Promise,看看会不会有这种情况。然后你做下兼容,先检测一下自带的Promise对象是否已经存在,存在的话,就使用自带的Promise,否则再加载es6-promise。

        我这边几个iOS10的真机上都没能重现你说的情况,不太好帮你找原因,只能你自己试一下了。
        XanaHopper:@一斤代码 6.5.12,更新到最新版也一样
        一斤代码:暂时还没遇到过。知道用户使用的微信版本是多少么?
      • d57341f790d0:多谢楼主分享,那使用的时候和bluebird那篇文章中一样是不是就可以了?ios android都可以用?
        一斤代码:@九九丸 小程序中直接使用webpack导入npm package不行,有些项目对它们很多修改才实现了的。
        d57341f790d0:@一斤代码 多谢指出,最近看来看去觉得得恶补一下Promise方面的知识,另外问一下,微信里面现在导入原生Npm package是用webpack可以实现么?
        一斤代码:嗯,Promise的用法和那篇文章中一样就可以,es6-promise在ios和android上都可以正常使用。

        值得一提的是最近的小程序运行时中,又把原生的Promise加回来了,所以现在也可以不使用额外的Promise库了。
      • _Wake:及时雨啊

      本文标题:微信小程序填坑-Android真机环境下的bluebird.js

      本文链接:https://www.haomeiwen.com/subject/mazopttx.html