Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery和Node.js正确处理回调_Javascript_Jquery_Node.js_Callback - Fatal编程技术网

Javascript 如何使用jQuery和Node.js正确处理回调

Javascript 如何使用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

我有以下情况:

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
功能


我如何知道远程服务请求何时完成以及处理其响应的最佳方式?

您可以使用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)看起来可疑。