使用Promise

传统JavaScript处理异步都是以callback的方式,随着逻辑复杂,异步操作也变得越来越多。JS开发者经常都苦恼于回调层层嵌套的情况,这种情况增加了代码的耦合度和复杂性,代码的组织上也会很不优雅,大大降低了代码的可维护性。

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。ES6将其写进了语言标准,统一了语法,原生提供了Promise。

银商ums-api从 1.1.0 开始,大多数API(除了webSocket、stream两个模块暂不支持)默认都写进了promise语法。开发者可以直接使用then链的方式代替CallBack嵌套

示例一,判断是否横屏

umsApi.getOrientation().then(ret=>{
    console.log("orientation = " + JSON.stringify(ret));
});

示例二,数据库操作:

umsApi.openDB().then(ret=>{
    console.log(">>> open Database result = " + ret);
    let tmp = JSON.parse(ret);

    if ("success" === tmp.type) {
      return umsApi.sqlBatch([  //将结果返回给下一个then处理,而不放在回调中
      'CREATE TABLE IF NOT EXISTS DemoTable3 (name, score)',
      [ 'INSERT INTO DemoTable3 VALUES (?,?)', ['Bing', 101] ],
      [ 'INSERT INTO DemoTable3 VALUES (?,?)', ['Tom', 202] ],
      ])
    }
}).then(ret=>{  //ret是来自上一个Promise的结果
    console.log(">>> sqlBatch result = " + ret);
    return umsApi.closeDB(); 
}).then(ret=>{
    console.log(">>> Database close result = " + ret);
})