【发布时间】:2020-09-30 17:04:08
【问题描述】:
我刚刚意识到我对 javascript 的了解不够,尽管我已经编写了一段时间的代码。
我不习惯的是 Javascript Async。
到目前为止,我一直在使用回调和承诺,因为文档和教程如下所示。
$.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() 吗? 我觉得我错过了使用 Promise 的核心优势。
请帮助我更好地理解。
【问题讨论】:
-
您传递一个回调,以便您可以在异步操作完成后配置“接下来会发生什么”,而不是将异步函数硬编码为执行特定操作。 (虽然回调必须与异步有任何关系,例如查看数组
map和forEach。) -
至于 promise 的优点,那是一个单独的问题,所以应该单独问。网上有很多资源,我建议你用谷歌搜索,如果你同时使用这两种资源足够长的时间,imo 的优势就会变得非常明显。
标签: javascript promise callback