网站开发工程师招聘信息,wordpress 前台文章,怎样上传图片到wordpress,软件开发公司架构回调函数可以用来处理 JavaScript 的异步操作#xff0c;但是选用 Promise、async/await 更好#xff0c;因为多重回调函数会导致回调地狱。
回调函数不是**同步的**#xff0c;它是延时操作执行完毕后会被调用的一个函数。
比如全局方法 setTimeout #xf…回调函数可以用来处理 JavaScript 的异步操作但是选用 Promise、async/await 更好因为多重回调函数会导致回调地狱。
回调函数不是**同步的**它是延时操作执行完毕后会被调用的一个函数。
比如全局方法 setTimeout 它第一个参数就是一个回调函数第二个参数是等待的时间以毫秒为单位如下
function callback() {
console.log(I am the first);
}
setTimeout(callback, 300);
console.log(I am the last);
// output
// I am the last
// I am the first
300毫秒之后回调函数 callback 会被调用。但是在它完成前剩下的代码会继续往下运行所以 I am the last 会被先打印出来。
开发者常犯的一个错误是误以为回调函数是同步的。比如他们会把回调函数的返回值用在其他操作上。
例如下面这个错误
function addTwoNumbers() {
let firstNumber 5;
let secondNumber;
setTimeout(function () {
secondNumber 10;
}, 200);
console.log(firstNumber secondNumber);
}
addTwoNumbers();
// NaN
会输出 NaN 因为 secondNumber 还未被赋值。在 firstNumber secondNumber 被执行的时候secondNumber 还没有被赋值因为 setTimeout 函数要在 200毫秒 后才调用回调函数。
最好的解决办法是把剩下的代码放在回调函数里去执行
function addTwoNumbers() {
let firstNumber 5;
let secondNumber;
setTimeout(function () {
secondNumber 10;
console.log(firstNumber secondNumber);
}, 200);
}
addTwoNumbers();
// 15