栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用Layman的术语理解异步代码

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用Layman的术语理解异步代码

我不确定在何处使用此函数,但回调的要点是您将它们传递给异步运行的某个函数。它存储了您的回调,当该函数完成需要执行的操作时,它将使用必要的参数 调用
回调。从前到后的示例可能是最好的。

假设我们有一个框架,其中有一个运行了很长时间的操作,该操作从数据库中获取了一些数据。

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
还没有发生!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号