上节我们读到了console类,稍微了weex如何执行我们写的js代码。正如weex在原生app的执行逻辑一样,weex在执行js代码时,并不是直接调用eval函数执行js字符串,而是把我们写的js进行一次简单的编译,即把我们写的js代码转换为weex支持的js代码。可以通过我们的业务逻辑中调用alert方法验证我的说法。
这节我们继续阅读weex运行时中的语法类,即promise类
在调试器中,promise.js的位置是在:
他的代码为:
const OriginPromise = global.Promise ||
function () {}
const MSG = 'Using "Promise" is unexpected'
const UnexpectedPromise = function (...args) {
console.warn(MSG)
return new OriginPromise(...args)
}
const fn = ['all', 'race', 'resolve', 'reject']
fn.forEach(n => {
UnexpectedPromise[n] = function (...args) {
console.warn(MSG)
return OriginPromise[n] && OriginPromise[n](...args)
}
})
global.Promise = UnexpectedPromise
/** WEBPACK FOOTER **
** ./html5/shared/promise.js
**/
我们可以看到weex对ES5的promise进行了简单的封装。因此我们在写代码时可以像下面一样:
var dd=Promise.resolve(20).then(function(data){
console.log(data);
});
经过测试发现weex对ES5的promise进行了重新封装,具体路径在:
明天我们将进行这方面代码的阅读。