我有以下情况:
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('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
函数。
我如何知道远程服务请求何时完成以及处理其响应的最佳方式?
答案 0 :(得分:-1)
你可以使用Jquery Promises:
$.when($.get(...))
.then(function(value) {
console.log('success!')
}, function(error) {
console.log('rejection');
});
承诺合约
有一项决议或拒绝 承诺一次解决。如果已经被拒绝或被拒绝,它将永远不会被履行。
听众执行一次
单个回调或错误回复将只执行一次。这符合合同的第一条规则。
承诺记住他们的状态
使用值解析的承诺会记住履行。如果将来将回调附加到此承诺,则将使用先前解析的值执行回调。错误的情况也是如此。如果拒绝承诺并在拒绝后附加了错误,则将使用拒绝的值执行。承诺的行为方式相同,无论它们是否已在未来得到解决或解决。