gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:17:57 28 4
gpt4 key购买 nike

目前正在学习回调在 JavaScript 中的含义,我正在努力理解回调是如何工作的,以及术语“passing this”或“passing that”的来源以及它如何与回调一起工作?我想展示一些示例代码并简要解释为什么我不明白它。

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();

调用 ChickenNugget 时会发生什么?函数中的代码是否会在遇到 ChickenNugget 时停止并重置,直到再次调用函数 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 - JavaScript 回调中术语 "pass"或 "passing"some 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51910839/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com