有人能解释一下这段与Js回调函数有关的代码吗?我对这段代码很困惑,可能是因为我是一个初学者.问题是:



我对这段代码很困惑,可能是因为我是初学者。无论如何,我的问题是:

1.(我在代码中没有提到视频,但我在数组中提到了video1、video2和video3。我还编写了一个名为getUserVideos的函数。当我写getUserVideos(user.userEmail,videos=>console.log(视频(;})它会自动显示结果吗?

2.(为什么我需要console.log(用户(两次?然后再次执行getUserVideos(user.userEmail,videos=>console.log(视频(;})?

console.log('start');
function loginUser(email, password, callback){
setTimeout(() => {
callback({ userEmail: email }); 
},3000);
}
function getUserVideos(email,callback) {
setTimeout(() => {
callback (["video1","video2","video3"]);
},2000)
}
const user = loginUser('labeeb@staffasia.org', 123456, user => {
console.log(user);
getUserVideos(user.userEmail, videos =>{
console.log(videos);
})
});
console.log(user);
console.log('finish');

对代码的完整解释将不胜感激。

在最近的一次问答中;A我解释了为什么Promise是现代JavaScript中异步控制流的事实选择。正如你的例子中所看到的,连续传球风格是一种很好的学习练习,但也有很多陷阱,对初学者来说非常困难。这是用promiseasync-await标记的,所以我将展示在没有延续传递样式的情况下代码的样子

function sleep(ms) {
return new Promise(r => setTimeout(r, ms))
}
async function loginUser(email, password) {
await sleep(3000)
return { userEmail: email }
}
async function getUserVideos (email) {
await sleep(2000)
return ["video1", "video2", "video3"]
}
async function main() {
console.log("start")
const user = await loginUser("labeeb@staffasia.org", 123456)
console.log(user)
const videos = await getUserVideos(user.userEmail)
console.log(videos)
return "finish"
}
main().then(console.log, console.error)

相关内容

最新更新