Javascript 如何使用jQuery和Node.js正确处理回调
我有以下情况: jQueryJavascript 如何使用jQuery和Node.js正确处理回调,javascript,jquery,node.js,callback,Javascript,Jquery,Node.js,Callback,我有以下情况: jQuery$.get调用本地node.js服务: function getUser() { var name = $('#inputName').val(); var url = "/users/" + name; $.get(url, function(err, res) { alert('Local service done'); }) .done(function() { alert
$.get
调用本地node.js服务:
function getUser() {
var name = $('#inputName').val();
var url = "/users/" + name;
$.get(url, function(err, res) {
alert('Local service done');
})
.done(function() {
alert('Remote service done');
})
.fail(function() {
alert('Error')
});
}
调用远程服务的本地node.js服务:
router.get('/users/:name', function (req, res){
//code
var userId = endpoints.findUserId(req.params.name);
res.send(userId);
});
请求总是在远程服务调用完成之前通过第一个警报,并且从不触发.done
和.fail
功能
我如何知道远程服务请求何时完成以及处理其响应的最佳方式?您可以使用Jquery Promissions:
$.when($.get(...))
.then(function(value) {
console.log('success!')
}, function(error) {
console.log('rejection');
});
承诺合同
只有一个决议或拒绝
承诺一次解决。如果它被拒绝,它将永远不会实现;如果它已经实现,它将被拒绝
侦听器执行一次
单个回调或errback将执行一次且仅执行一次。这源于合同的第一条规则
承诺记住自己的状态
用价值来解决的承诺会记住实现。如果将来将回调附加到此承诺,则将使用先前解析的值执行回调。同样的道理也适用于errbacks。如果承诺被拒绝,并且在拒绝后附加了错误回复,则将使用拒绝的值执行该承诺。承诺的行为方式是相同的,无论它们是已经解决还是将来解决。这是不可能的,在
$中使用的回调是不可能的。在调用完成之前获取警报,并且完成和失败都不会执行。我的意思是,它在请求完成之前发出警报。var userId=endpoints.findUserId(req.params.name)
没有回调,后跟res.send(userId)代码>看起来可疑。