【发布时间】:2018-04-06 11:12:05
【问题描述】:
我很难理解 JavaScript 中的回调如何获取参数。或者换句话说:如何实现一个高阶函数,使其回调接受例如标准的err 和data 参数。
就像回调示例中的in this article on asynchronous JavaScript以通常的方式使用(我知道这很常见,因为我在 Node.js moongose 中看到了这种模式(即for creating data in db)) :
function getData(options, callback) {
$.get("example.php", options, function(response) {
callback(null, JSON.parse(response));
}, function() {
callback(new Error("AJAX request failed!"));
});
}
// usage
getData({name: "John"}, function(err, data) {
if(err) {
console.log("Error! " + err.toString())
} else {
console.log(data);
}
});
回调如何根据上面声明的getData() 函数获取参数err 和data?
【问题讨论】:
-
回调究竟如何获取参数错误和数据?你给它,第 3 行和第 5 行
-
当您调用
getData时,您将整个function(err, data)函数作为第二个参数传递。如果您查看getData函数,这就是所谓的callback,它仍然需要两个参数。如果您的响应成功,则函数的err部分变为空,data部分变为JSON.parse(response)。 -
但它究竟是如何变成 null 和 data 的呢?过去的时候什么都没有。 console.log(data) 如何传递 JSON.parse(response)?
-
好的。抱歉@LinasMickevicius 太厚了。 3 号线和 5 号线。终于让我明白了。我想我的大脑更倾向于同步和命令式。我讨厌这个功能性的东西,里面的东西地狱里的东西。感谢您的耐心
-
只是需要时间沉入,不知不觉中,会觉得完全正常和普通
标签: javascript asynchronous callback parameter-passing