我不确定在何处使用此函数,但回调的要点是您将它们传递给异步运行的某个函数。它存储了您的回调,当该函数完成需要执行的操作时,它将使用必要的参数 调用
回调。从前到后的示例可能是最好的。
假设我们有一个框架,其中有一个运行了很长时间的操作,该操作从数据库中获取了一些数据。
function getStuffFromDatabase() { // this takes a long time};由于我们不希望它同步运行,因此我们允许用户传递回调。
function getStuffFromDatabase(callback) { // this takes a long time};我们将模拟长时间调用
setTimeout;我们还将假装我们从数据库中获得了一些数据,但是我们只是硬编码一个字符串值。
function getStuffFromDatabase(callback) { setTimeout(function() { var results = "database data"; }, 5000);};最后,一旦有了数据,我们将 调用 框架函数用户提供给我们的回调。
function getStuffFromDatabase(callback) { setTimeout(function() { var results = "database data"; callback(results); }, 5000);};作为框架的用户,您可以执行以下操作来使用该函数:
getStuffFromDatabase(function(data) { console.log("The database data is " + data);});所以,你可以看到
data(同
response和
postData在你的例子),从你通过回调函数来 成 ;
当它知道数据应该是什么时,它将把数据提供给您。
您无法在回调中设置值并无法在回调之外使用它的原因是,回调本身直到稍后才发生。
// executed immediately executed sometime in the future// | | by getStuffFromDatabase// v vgetStuffFromDatabase(function(data) { var results = data; // <- this isn't available until sometime in the future!});console.log(results); // <- executed immediately当
console.log运行时,的分配
var results还没有发生!



