FuseJS入门(中)

1. 反应式操作符 Reactive Operators
   原始的Observable发生变化,则反应式操作符定义的相应的Observable也会发生变化。这就反应式操作符的及时反应特性。
   同事需要注意的是,只有当最后生成的Observable是被使用的,比如数据绑定或是需要它的值,反应式操作才会计算出结果

   去生成这个Observable的值。

    1.1  where(condition)
           将条件为真的值,返回为一个新的Observable。
           新的Observable时刻观察这旧的Observable,一旦旧的发生变化,会立即反应的新的(更)。

var cars= Observable(
    { name: 'toyota', money:'100'   },
    { name: 'hoda'  , money:'100'   },
    { name: 'benchi', money:'1000'  },
    { name: 'baoma' , money:'1000'  });

var goodCars = cars.where(function(e){
    return e.money == '1000';
});
   1.2 map(function)
         将Observable里面的每一个值调用一遍指定函数,结果返回为一个新的Observable。
var numbers = Observable(1, 3, 5);
var sqrts = numbers.map(function(number) {
    return Math.sqrt(number);
});
  1.3 count()
          返回对象Observable的值的数量。
   1.4 count(condition)
          返回指定条件为真的 值的数量。
  1.5  not()
         返回相反值。
   1.6 filter(condition)
         通过指定条件的才会返回一个变种的Observable,否则保持原来的值。
   1.7 expand(function)

         将一个只包含一个数组的Observable拆散,再重新按数组值组合成一个新的Observable。

2. 订阅更新 Subscribing to Updates
    2.1 addSubscriber(function)
          当对象Observable发生变化时,执行指定的function

    2.2 removeSubscriber(function)

          对一个Observable操作完成后,要删除该订阅subscription,不然内存垃圾会越来越多。

3. 其它

    3.1 depend();   
    3.2 failed(message);
   3.3 setValueExclusive(value, excludingObservable) 给某个Observable设value值,且不通知excludingObservable订阅者。
    3.4 toString() 返回一个描述改Observable的字符串。

         列:var testObs = Observable("one","2","one"); testObs.toString(); //返回 “(Observable) one,2,one”

4. 应用
    Observable可以用来做很多事。
    主要有: 数据绑定Data Binding,异步编程, 反应式编程
    4.1 应用程序编程接口  APIs
         4.1.1 Polyfills兼容代码。 提供一些特色功能,典型的就是浏览器功能。

         4.1.2 fetch  实现HTTP Request的方式   
                 如下,JS对象(requestObject)转成一个JSON数据,通过PSOT的方式提交,然后服务端返回JSON数据,
                再转回一个JS对象。         

var sts = 0;
var responseFlg = false;

fetch('http://baidu.com', {
      method:'POST',
      headers: {"Content-type":"application.json"},
      body: JSON.stringify(requestObject)  //JS对象转成一个JSON数据
}).then(function(response) {
   sts = response.status;     //Get HTTP status code
   responseFlg = response.ok; //Is response.status in the 200-range?
   return response.json();    // This returns a promise  服务端返回JSON数据
}).then(function(responseObject) {
   // Do something with the result
}).catch(function(err) {
   // An error occured parsing Json
});

      4.1.3 FuseJS支持XMLHttpRequest,支持promise

      4.1.4 setTimeout(function,延迟时间)
              设置延时执行。
      4.1.5 Storage  可以用来将文本保存为应用目录下的文件。
            4.1.5.1 write 将字符串写入到指定文件。 
                     列: var storage = require('FuseJS/Storage');

                            storage.write(fileName, 要写入的字符串);  //返回一个含有布尔值的promise,表示是否写入成功,

           4.1.5.2 read    返回一个含文件内容的字符串的promise
                      storage.read(对象文件).then ( function(context) {
                              console.log(context);
                       }, function(error) {
                              console.log(error);
                       });

           4.1.5.3 writeSync 同步写入数据到指定文件,成功则返回true。
                                       因为是同步写入,容易堵塞。所以写入大量数据时使用write比较好。

            4.1.5.4 readSync 同步读。 deleteSync同步删除

            4.1.6 Lifecycle 生命周期
                     var lifecycle = require('FuseJS/Lifecycle'); //声明一个lifecycle对象
                     lifecycle.onEnteringForeground = function () {
                           initialize();
                     };
                    APP的开始事件是隐式的,就是当JS代码都一次被解释时,得到onEntringForeground开始事件。
                    *onEnteringForeground  App脱离挂起状态,开始运行。App开始时可以得到改事件。
                    *onEnteringBackground  App脱离运行状态,将被挂起。
                    *onEnteringInteractive     App进入高速交互状态,开始接受事件。
                    *onExitedInteractive         App部分被遮盖或者不再是焦点状态。
                    *onTerminating                App将被关闭。

    4.1.7 Phone   var phone = require('FuseJS/Phone');  phone.call("电话号码");
             4.1.8  Camera var camera = require('FuseJS/Camera');  
                       调用Camera操作设备的摄像头。有相应的函数方法对应相应的操作。如:camera.takePicture({宽,高,朝向})
             4.1.9 Vibration   var vibration = require('FuseJS/Vibration');  vibration.vibrate(0.8); //震动0.8秒
             4.1.10 InterApp  专门为简化App间通信而设计的模块。
                        目前干两件事: 1. 通过一个URi启东另一个App, 2. 接收另一个App的URi请求
                        *URI: 统一资源标识符。Universal Resource Inditifier
                        var interApp = require('FuseJS/InterApp');   
                        interApp.lanchUri('test://myFuse/appUri'); // 请求系统打开目标App

                        interApp.onReceivedUri  这事一个回调函数。用来告知其它App正在用一个Uri调用你的App。
                        要接收这个通知首先App里面要定义一个Uri Scheme。
                       Fuse里很简单,只要在unoProj文件的Mobile字段上加上一个UriScheme元素。
                       "Mobile" { "UriScheme": "partOfUri"}
                       每当设备上有一个含partOfUri字段的Uri被打开时,你的App就会被打开。并用完成的Uri调用onReceivedUri。
                       当这个调用发生时,如果App已经打开了onReceivedUri,这时设备会短暂的脱离交互模式。
                        interApp.onReceivedUri = function(uri) { console.log("received uri:" + uri); };

                            
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值