Javascript 为什么我们需要回调而不是直接在函数内部调用?在JS中
我只是意识到我对javascript理解不够,尽管我已经编写了一段时间了 我不舒服的是Javascript异步 到目前为止,我一直在使用callback和promise,因为文档和教程都是这样做的Javascript 为什么我们需要回调而不是直接在函数内部调用?在JS中,javascript,promise,callback,Javascript,Promise,Callback,我只是意识到我对javascript理解不够,尽管我已经编写了一段时间了 我不舒服的是Javascript异步 到目前为止,我一直在使用callback和promise,因为文档和教程都是这样做的 $.get("some/url", function() { // callback body }) axios.get('some/url').then(res => { console.log(res.data); }); arr.map(elemen
$.get("some/url", function() {
// callback body
})
axios.get('some/url').then(res => {
console.log(res.data);
});
arr.map(element => console.log(element))
我知道回调用于异步代码
function doSomething(cb) {
console.log("this function receives callback function");
cb();
}
但是如果我们只是手动调用函数内部的函数呢
function func1() {
// function body
}
function doSomething() {
console.log("this function receives callback function");
func1();
}
我的想法是,只要函数在正确的时间被调用,我们就不必使用回调。
或者是因为回调在其他操作进行时执行它的工作?
如果是这样的话,它是否打破了javascript作为单线程的原则?
因为它同时做两件事
此外,人们是否因为其可读性而使用promise优于回调函数,而您可以使用promise.all()?
我觉得我失去了使用承诺的一个核心优势
请帮助我更好地理解。如果您不使用回调,那么您只能调用
func1()
。原始的doSomething()
更通用,因为您可以根据调用者的需要调用不同的函数
function func1() {
// function body
}
function func2() {
// function body
}
doSomething(func1);
doSomething(func2);
就是代码中硬编码数据和动态获取数据之间的区别 例如,在后端,您制作代码,以便它能够满足不同用户的不同需求。。。同时,同样的代码 所以在这个例子中:
function doSomething(cb) {
console.log("this function receives callback function");
cb();
}
function func1() {
// function body
}
function doSomething() {
console.log("this function receives callback function");
func1();
}
您可以构建一个函数,根据它接收到的cb为不同的用户提供不同的信息
在本例中:
function doSomething(cb) {
console.log("this function receives callback function");
cb();
}
function func1() {
// function body
}
function doSomething() {
console.log("this function receives callback function");
func1();
}
它只运行一个特定的函数func1,就是这样您可以传递一个回调,以便在异步操作完成后配置“下一步将发生什么”,而不是硬编码异步函数来执行特定的操作。(尽管回调与异步无关,但看看array
map
和forEach
就知道了。)至于承诺的好处,这是一个单独的问题,因此应该单独问。这网上有很多资源,我建议你用谷歌搜索,而且如果你长时间使用这两种资源,在我看来,这两种资源的优势是非常明显的。