Javascript 如何对多个回调进行概念化,也称为。您是如何看待这样的代码的?

Javascript 如何对多个回调进行概念化,也称为。您是如何看待这样的代码的?,javascript,callback,Javascript,Callback,例如,以以下代码源代码为例: 我经常遇到这样的情况,我需要构建这样的东西,或者阅读它,而我总是做得很慢,所以,有没有更好的方法来概念化这个模式 以下是我目前阅读上述内容的思考过程: 好的,我们有两个文件,一个是从另一个导入的函数。容易的豌豆 正在调用导入的函数,并传递URL和回调函数。容易的豌豆柠檬挤压。此回调函数接受1个参数“data”,并将其传递给doSomethingSuveData。我相信我们在这一点上阻止了 在file.js中,调用并传递了getUsefulContents URL和回

例如,以以下代码源代码为例:

我经常遇到这样的情况,我需要构建这样的东西,或者阅读它,而我总是做得很慢,所以,有没有更好的方法来概念化这个模式

以下是我目前阅读上述内容的思考过程:

好的,我们有两个文件,一个是从另一个导入的函数。容易的豌豆

正在调用导入的函数,并传递URL和回调函数。容易的豌豆柠檬挤压。此回调函数接受1个参数“data”,并将其传递给doSomethingSuveData。我相信我们在这一点上阻止了

在file.js中,调用并传递了getUsefulContents URL和回调

调用getJSON,并传递URL和回调。。。是否所有内容都直接通过GetUsefulContent?我们为什么需要它?来回迷茫

…好吧,不管怎样,getJSON现在有了URL和回调。它创建一个xhr对象,通过调用回调函数对onload事件做出反应!将this.responseText传递给它,这就是数据

回调运行,运行doSomethingSuveData并已完成


我花了相当长的时间来定期分析。有没有什么概念上的技巧或更好的方法来分析这一点?

没有什么技巧可以将其概念化,但这与我们作为程序员使用的主要技巧之一背道而驰

这个技巧就是把程序分解成函数来隐藏它们在里面做什么。不要试图将所有内容都理解为一个大的长流程,只需要理解getUsefulContents为您提供了一些有用的内容。不要担心它是如何工作的,除非您正在更改GetUsefulContent

通常,您可以将每个函数视为一个黑盒。你喂它a,它吐出b。这是你通常需要了解的,除非你在里面胡闹

如果你需要详细了解整个程序,那就需要花点时间才能理解。这很难理解。这就是为什么我们像现在这样使用函数的原因


对于回调,它看起来有点不同,但仍然是一样的。对于一个接受回调的函数,您可以为它指定一个参数,并在完成时调用它。它称之为某物并吐出b。除此之外,你通常不必担心这一点。

无论谁投了反对票,愿意分享原因吗?是程序员提高程序可读性和可理解性的关键方法。当然。问题是如何理解一些东西。你在鼓吹什么都不懂。您所说的对我构建示例代码中的函数毫无帮助,这正是我所要求的帮助。
// --file.js--
function getJSON(url, callback) {
  let xhr = new XMLHttpRequest();
  xhr.onload = function () { 
    callback(this.responseText) 
  };
  xhr.open('GET', url, true);
  xhr.send();
}

export function getUsefulContents(url, callback) {
  getJSON(url, data => callback(JSON.parse(data)));
}

// --main.js--
import { getUsefulContents } from 'file';
getUsefulContents('http://www.example.com', data => {
  doSomethingUseful(data);
});