如何正确处理jQuery和Node.js的回调
How to properly deal with callbacks with jQuery and Node.js
我有以下情况:
调用本地node.js服务的jQuery $.get
:
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 Promises:
$.when($.get(...))
.then(function(value) {
console.log('success!')
}, function(error) {
console.log('rejection');
});
有一个决议或拒绝诺言只兑现一次。被拒绝的愿望永远不会实现,被实现的愿望永远不会实现。
监听器执行一次
单个回调或错误回调将执行一次且仅执行一次。这是根据合同第一条规则得出的。
承诺记住它们的状态
用一个值解析的承诺记住了它的实现。如果将来将回调附加到此承诺,则将使用先前解析的值执行回调。错误返回也是如此。如果一个承诺被拒绝,并且在拒绝后附加了一个错误,那么它将使用被拒绝的值执行。无论承诺是已经解决了还是将来解决了,它的行为都是一样的。
相关文章:
- 要求未定义JS回调参数
- 从新的WordPress媒体上传程序获取JS回调
- 重构DRY代码的Node.JS回调
- Material Design Lite所有元素加载JS回调
- js回调到基于生成器的代码
- Flux+React.js-回调操作是好是坏
- 节点.js回调函数不返回值
- 理解node.js回调
- node.js回调函数generanddb
- JSON和JS回调函数
- 从嵌套在函数中的Node.js回调返回对象
- 循环中的Node.js回调具有错误的迭代器值
- 将变量传递给 Node.JS 回调函数
- 防止动画多次运行 - js 回调
- 引导框.js回调不起作用
- 使用 map() 和一个具有一个附加参数的函数的 JS 回调
- 异步等待.js回调中的多个参数
- 定义节点.js回调的超时
- 节点.js回调如何异步
- 节点.js回调工作不正常