der*_*rek 4 javascript webrtc es6-promise
我最近正在学习 WebRTC,在这里发现了“promise”的用法(https://github.com/mdn/samples-server/blob/master/s/webrtc-simple-datachannel/main.js)。
localConnection.createOffer()
.then(offer => localConnection.setLocalDescription(offer))
.then(() => remoteConnection.setRemoteDescription(localConnection.localDescription))
.then(() => remoteConnection.createAnswer())
.then(answer => remoteConnection.setLocalDescription(answer))
.then(() => localConnection.setRemoteDescription(remoteConnection.localDescription))
.catch(handleCreateDescriptionError);
Run Code Online (Sandbox Code Playgroud)
localConnection 和 removeConnection 是 RTCPeerConnection 对象。从这里https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection,
创建优惠:
void createOffer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, 可选的 MediaConstraints 约束);
createOffer 有 3 个参数。但是为什么上面的代码没有参数呢?参数在哪里?
因为 API 已经通过 promise 进行了现代化,并且文档已经过时。
前:
pc.createOffer(onSuccess, onFailure, options);
Run Code Online (Sandbox Code Playgroud)
之后:
pc.createOffer(options).then(onSuccess, onFailure)
Run Code Online (Sandbox Code Playgroud)
哪里options是可选的。由于adapter.js polyfill,这应该适用于所有支持WebRTC的浏览器(并且也适用于Firefox本机)。
ES6=>箭头函数在 Firefox 和 Chrome 45 中有效,你可以试试这个:
pc.createOffer(onSuccess, onFailure, options);
Run Code Online (Sandbox Code Playgroud)
pc.createOffer(options).then(onSuccess, onFailure)
Run Code Online (Sandbox Code Playgroud)
注意: Chrome 45 用户,请使用fiddle,因为相同的代码在 stackoverflow 代码段中不起作用!
| 归档时间: |
|
| 查看次数: |
5186 次 |
| 最近记录: |