那个方法是异步我就把回调函数加载那里。然后我拿到该函数的值传到我自己的方法里面。
这个例子说明了回调函数其实一种思想,由于异步,我想要接收到值,我只能等它操作完成以后再调用我的方法才能获取到前面的值。以前我们直接调用该函数获取它的返回值。这种方式行不通了。
export function lajifeiwu() {
const color='red'
// function say() {
// setTimeout(() => {
// const color = 'yellow'
// }, 1000);
// return color;
// }
// //hqys
// function hqys() {
// var color = say(); //这样肯定获取不到我们要的那个值,因为什么是异步的,想要获取必须要在都执行完成以后再调用我们获取值的函数
// console.log(color);
// }
// hqys();
// function say(callback) {
// setTimeout(() => {
// const color = 'yellow'
// callback(color)
// }, 1000);
// }
// function hqys(color) {
// // var color = say(); //这样肯定获取不到我们要的那个值,因为什么是异步的,想要获取必须要在都执行完成以后再调用我们获取值的函数
// console.log(color);
// }
// say(hqys);
//用了回调函数以后接收值得方式可能就不是return了这个一定要注意,不定义只有return才可以传值
// function say() {
// return new Promise(function (resolve) {
// setTimeout(() => { const color = 'yellow'; resolve(color) }, 1000);
// });
// }
// function hqys(color) {
// console.log(color);
// }
// say().then(hqys)
function say() {
return new Promise(function (resolve) {
setTimeout(() => { const color = 'yellow'; resolve(color) }, 1000);
});
}
async function hqys() {
const color = await say();
console.log(color);
}
hqys();
// console.log(say());
//我两秒以后调用,而不是我调用了以后等两秒所以还是输出未定义
// setTimeout(() => { console.log(say()); }, 2000);
}
export function lajifeiwu() {
const color='red'
// function say() {
// setTimeout(() => {
// const color = 'yellow'
// }, 1000);
// return color;
// }
// //hqys
// function hqys() {
// var color = say(); //这样肯定获取不到我们要的那个值,因为什么是异步的,想要获取必须要在都执行完成以后再调用我们获取值的函数
// console.log(color);
// }
// hqys();
function say(callback) {
setTimeout(() => {
const color = 'yellow'
callback(color)
}, 1000);
return color;
}
function hqys(color) {
// var color = say(); //这样肯定获取不到我们要的那个值,因为什么是异步的,想要获取必须要在都执行完成以后再调用我们获取值的函数
console.log(color);
}
say(hqys);
// console.log(say());
//我两秒以后调用,而不是我调用了以后等两秒所以还是输出未定义
// setTimeout(() => { console.log(say()); }, 2000);
}
大佬https://www.jb51.net/article/100661.htm
初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数。
我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。
字面上的理解,回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。
其实也很好理解对吧,回调,回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。但是以前看过很多博客,他们总是将回调函数解释的云里雾里,很高深的样子。
举一个别人举过的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。” 对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。
现在基本理解回调函数的意思了吧。不理解的话没关系,我们用代码说话。
//定义主函数,回调函数作为参数
function A(callback) {
callback();
console.log('我是主函数');
}
//定义回调函数
function B(){
setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
//调用主函数,将函数B传进去
A(B);
//输出结果
我是主函数
我是回调函数
上面的代码中,我们先定义了主函数和回调函数,然后再去调用主函数,将回调函数传进去。
定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等。
https://www.cnblogs.com/lishuxue/p/5999682.html
回调函数就是有两个函数,一个主函数,主函数里面调用的参数就是回调函数。
function callback() {
alert("I am in the callback!");
}
function work(func) {
alert("I am calling the callback!");
func();
}
work(callback);
链接:https://www.zhihu.com/question/19801131/answer/91780287
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
https://www.runoob.com/jquery/jquery-callback.html