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

时间:2016-09-09 13:49:25

标签: 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('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函数。

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

1 个答案:

答案 0 :(得分:-1)

你可以使用Jquery Promises:

$.when($.get(...))
.then(function(value) {
    console.log('success!')
}, function(error) {
    console.log('rejection');
});

承诺合约

有一项决议或拒绝 承诺一次解决。如果已经被拒绝或被拒绝,它将永远不会被履行。

听众执行一次

单个回调或错误回复将只执行一次。这符合合同的第一条规则。

承诺记住他们的状态

使用值解析的承诺会记住履行。如果将来将回调附加到此承诺,则将使用先前解析的值执行回调。错误的情况也是如此。如果拒绝承诺并在拒绝后附加了错误,则将使用拒绝的值执行。承诺的行为方式相同,无论它们是否已在未来得到解决或解决。