术语"pass"或"passing" JavaScript 回调中是什么意思?



目前正在学习 JavaScript 中的回调是什么意思,我正在努力掌握回调的工作原理以及传递这个或传递的术语以及它如何与回调一起工作?我有一些示例代码,我想展示并简要解释为什么我没有得到它。

var users = ["Sam", "Ellie", "Bryan"];
function addUser(username, chickenNugget) {
setTimeout(function() {
users.push(username);
chickenNugget();
}, 200);
}
function getUsers() {
setTimeout(function() {
console.log(users);
}, 100);
}
addUser("Jake", getUsers);
getUsers();

当鸡块被调用时会发生什么? 函数中的代码在点击鸡块时是否停止并重置,直到再次调用函数 addUser?

回调是 Javascript 中处理异步性的一种方式。有时你有使用setTimeout之类的异步函数,但你需要等待这些异步函数完成,然后才能继续运行更多的代码(这取决于异步请求(,回调是实现这一点的一种方式。我已经更新了您的示例以说明我上面的意思,希望对您有所帮助:

var users = ["Sam", "Ellie", "Bryan"];
function addUser(username, callback) {
setTimeout(function() {
users.push(username);
// this will be called only after username has been added to users
callback();
}, 200);
}
function isJakeInUsers() {
if (users.includes("Jake")) {
console.log("Jake is in users! :)");
} else {
console.log("Jake is not in users! :(");
}
}
// as a callback, isJakeInUsers will only be called after "Jake" has been added to users
addUser("Jake", isJakeInUsers);
// this gets called immediately, before "Jake" has been added to users
isJakeInUsers();

回调只不过是传递以供以后使用的指令。回调是JavaScript的基础,因为它是一种异步语言。这意味着,如果操作需要外部服务,它将执行下一个命令,而无需等待该操作完成。

下面是同步执行代码的示例

var total_in_cart = 0;
var shipping = 0;
var total = 0;
total_in_cart = 100; // USD
shipping = 10;
total = total_in_cart + shipping;
console.log(total);

这将输出 110,因为它等待每一行完成执行,然后再执行下一行。

现在,下面是异步执行代码的示例

var total_in_cart = 0;
var shipping = 0;
var total = 0;
total_in_cart = 100; // USD
shipping = get_shipping_fee_from_dhl_api();
total = total_in_cart + shipping;
console.log(total);

这将输出 100,因为 JS 没有等待 api 调用完成并继续执行新行。要解决此问题,您必须发送进一步的指令,以便在 api 请求完成后回调,因此称为回调一词。

因此,在这种情况下,您必须将所有计算包装到可以作为回调可执行文件发送的代码中。在JS中,您将使用一个函数并将其分配给一个变量,然后将其传递给将获取它并执行它的函数。

请记住

function getUsers() {}

var getUsers = function() {};

相关内容

  • 没有找到相关文章

最新更新