angular集成websocket_Javascript(Angularjs)websocket与承诺?

你可以设置一个基本的请求/响应

reactor并用promises包装它.

设置反应堆:

var callbacks = {};

websocket.onmessage = function(event) {

var data = angular.fromJson(event.data);

if (angular.isDefined(callbacks[data.request_id])) {

var callback = callbacks[data.request_id];

delete callbacks[data.request_id];

callback.resolve(data);

} else {

$log.error("Unhandled message: %o",data);

}

};

请求功能:

var requestId = 0;

$scope.getRequestId = function() {

return requestId++;

};

$scope.request = function(data) {

var request = {

request_id: $scope.getRequestId(),data: data

};

var deferred = $q.defer();

callbacks[request.request_id] = deferred;

websocket.send(angular.toJson(request));

return deferred.promise.then(function(response) {

request.response = response;

return response;

});

};

示例用例可能是:

$scope.request("My Request").then(function(response) {

// do something with response

});

您还可以使用onerror和onclose在适当的位置执行$q.reject,以便websocket错误可以使其返回到promise.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值