javascript在网络上的顺序执行
Sequential execution in javascript over network
在我的应用程序中,递归函数为一些数据调用远程对等方,然后再次调用自己。是否有任何方法可以等待服务器的响应,然后继续执行流程?
我正在使用Simple-Peer
进行远程呼叫。
function foo() {
data = getFromPeer();
if(condition)
foo();
else return bar;
}
getFromPeer
是用户定义的函数,它使用SimplePeer
连接向远程对等端发送数据。远程对等端在收到请求时进行响应。到目前为止,还没有定义任何承诺或回调。
查看https://github.com/feross/simple-peer,似乎没有一种标准的方式来进行"远程过程调用"或接收对先前发送的某些数据实际已收到这一事实的确认。
因此,为了实现您想要通过简单对等实现的目标,您需要在简单对等通道上添加一个自定义的"协议"。由于您无法保证远程对等端接收消息的顺序,因此您需要为每条消息提供一个ID。
类似于伪代码中的内容(并且考虑到peer
是一个连接的简单对等体)
pendingJobs = {}
function addJob(data, callback) {
var id = uuid() // imagine a function giving a uuid
pendingJobs[id] = callback
peer.send({ id: uuid, payload: data })
}
peer.on('data', function(info) {
var id = info.id
var cb;
if (pendingJobs[id] && info.payload) {
cb = pendingJobs[id]
cb(info.payload)
}
})
当然,这个伪代码解决方案非常粗糙,您可能需要添加一些pendingJobs的垃圾收集,并进行错误回调,以防远程对等方从未发送ACK消息。
您可以为每条消息添加一个类型('rpc','ack',..)
相关文章:
- 使用appendChild()动态添加的脚本是按顺序执行还是并行执行
- 如何在angularjs中按顺序执行多数据ng应用程序
- 要按顺序执行的异步代码
- AngularJS:如何按照预定义的顺序执行函数
- 按顺序执行导入的 Javascript 函数
- 无法让 jQuery 以正确的顺序执行代码
- 触发后的 Javascript 顺序执行
- $http.post() angularjs 响应函数未按正确的顺序执行
- 如何按顺序执行 jQuery 函数
- 为什么Javascript不按顺序执行代码
- 对象在循环中运行时未定义,但在按顺序执行时未定义
- 按顺序执行ajax请求的动态编号
- javascript在网络上的顺序执行
- SQL语句是通过PhoneGap'按顺序执行的吗;的Web SQL数据库
- jQuery Deferred和Promise用于同步和异步函数的顺序执行
- 顺序执行js
- 如何按顺序执行承诺数组
- 有没有更好的方法以一定的顺序执行一堆部分异步的jQuery函数
- 如何确保 Dojo 模块按特定顺序执行
- 为什么我的 JavaScript 不能按顺序执行