Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
想了解javascript中回调函数的需求吗_Javascript_Html - Fatal编程技术网

想了解javascript中回调函数的需求吗

想了解javascript中回调函数的需求吗,javascript,html,Javascript,Html,我是学习JavaScript的新手。我读过关于回调函数的书,但我无法理解它的真正用途 所以,请通过任何现实世界的例子来帮助我们 下面是描述在中使用回调函数的小代码,但我也不清楚 var friends = ["Mike", "Stacy", "Andy", "Rick"]; ​ friends.forEach(function (eachName, index){ console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy

我是学习JavaScript的新手。我读过关于回调函数的书,但我无法理解它的真正用途

所以,请通过任何现实世界的例子来帮助我们

下面是描述在中使用回调函数的小代码,但我也不清楚

var friends = ["Mike", "Stacy", "Andy", "Rick"];
​
friends.forEach(function (eachName, index){
    console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick​
});

在JavaScript中,下面的函数是一个对象:

function (eachName, index){
  console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick​
}
让我们把这个
对象称为A
。 当您传递代码
friends.forEach(A)
时,浏览器将了解当运行
数组friends
时,它将触发
A


因此,在最后,回调函数就像您“定义”函数一样,但稍后您将使用它。

Javascript通常是同步的,即命令一个接一个地执行

但是,有时您希望函数是异步的,因此您调用函数时不希望等待函数完成后再继续执行下一个任务


回调由异步函数使用。函数完成后,回调函数将运行,而其他代码不必等待它。

JavaScript回调函数的用途很多。您可能已经知道它只是一个函数,我们将其作为参数传递给另一个函数。这意味着我们可以有一个名为
foo
的函数。让我们说
foo
是一种通过排序运行数组的方法,但是实际的排序函数是可变的。因此,我们可以对每个算法使用
foo
,只需像这样传递值

foo([1,6,1,2], quickSort);
假设我们有一个快速排序方法

一般来说,回调用于在函数执行后调用某些内容。你说,为什么不一个接一个地调用一个函数呢

foo();
bar();
您为什么要将
传递给
foo
?嗯,通常在处理异步性时使用回调。因此,
bar
函数将在AJAX请求得到响应之前调用,或者在setTimeout触发回调之前调用


对于您提供的特定示例,这只是一种迭代数组的简化方法。另外一个好处是,您可以使用命名函数,这样您就可以更早地声明它并更好地分离代码。

var-friends=[“Mike”、“Stacy”、“Andy”、“Rick”];forEach(函数(元素、索引、数组){console.log((索引+1)+“+”+元素);})

JavaScript中回调的概念是您可以将函数分配给变量

在JavaScript中,除了字符串和数字这样的简单类型之外,所有的东西都是对象(甚至那些对象也可以像对象一样调用函数)

让我们以您的函数为例:

语法 参数 要为每个元素执行的函数,包含三个参数:

currentValue
数组中正在处理的当前元素

    index
    array
数组中正在处理的当前元素的索引

    index
    array
正在应用forEach的数组

thisArg
可选。值,在执行回调时用作此值

它接受一个回调函数,该函数将为每个元素调用

此外,我们在JS中定义了异步调用(借助超时/间隔和AJAX调用)

回调函数的概念不仅仅停留在JS中。在任何地方,使用作为引用传递的函数都会更容易或更简单,我们有回调的概念(js中AJAX的这个特性让人疯狂,这就是为什么说js是异步的)

你可以在这里读到更多关于它的内容:

阅读此文:阅读此文:我阅读了这两个链接…但仍然不十分清楚…任何人都可以通过实际问题或示例进行解释吗?基本上,在您提供的代码中,您迭代的每个元素都会触发回调函数。在您的示例中,将使用每轮传递给回调函数的以下参数触发回调函数:值和索引。回调非常有用,因为它大大减少了代码的冗余:您不想为每个名称编写函数,是吗?…tx为您提供帮助…您可以用外行术语解释一下,什么是需要tp pass函数作为另一个函数的参数?????嗯,就像任何变量一样,您可以命名函数(例如
foo
)然后将其传递给另一个函数“bar
bar(foo)`您也可以通过将函数作为参数写入而不使用其名称来直接传递函数。这称为匿名函数:
bar(function(){})
再次向您寻求帮助…..但您不理解我的问题…..我问的是外行术语中异步函数的需要???/不是它的定义..假设您希望一些代码在10秒后执行。例如,在10秒后,请用户进行调查。您可以定义一个名为
promptUserForSurv的函数ey
然后
设置超时(promptUserForSurvey,10000)
。在这种情况下,您需要将函数设置为异步,因为同步函数会在提示用户输入之前阻止代码执行10秒。或者使用HTTP请求。假设您需要服务器提供一些信息,如果服务器响应缓慢,且请求是同步的,则用户将被阻止,直到请求发出为止成功了。