相机例子发起通信过程
1.exec(cameraSuccessCallback, cameraErrorCallback, "Camera", "takePicture", args);
执行如上代码后js生成callbackId,js端保存callbackId对应的成功失败回调,并将callbackid传给原生,
最终原生通过callbackId来搜索对应的回调函数
cordova.callbacks[callbackId] = {success:cameraSuccessCallback,fail:cameraErrorCallback}将
2.以上代码最终执行prompt()将数据传递给原生
prompt(argsJson, 'gap:'+JSON.stringify([bridgeSecret, 'Camera', 'takePicture', callbackId]));
bridgeSecret为桥接方法,见cordova/exec模块篇
我们在设置native到js的通信模式的时候会返回随机数字(字符),native端js端均保存这个变量值,
在每次执行exec的时候会将js端保存的该值传递给native并做比较,如果两个值不相等则终止执行exec