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

如何在node.js中创建自定义异步函数?

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

如何在node.js中创建自定义异步函数?

注意 :此答案写于2014年,在出现之前

asyncfunction
,在Promises流行之前。尽管同样的原则同样适用,但我建议您先阅读Promises,然后再尝试了解它们与“传统”回调驱动的异步函数的关系。


要创建一个异步调用其回调的函数,您必须在其上使用一些平台提供的异步原语(通常与IO相关)-计时器,从文件系统读取,发出请求等。

例如,此函数采用一个回调参数,并在100ms之后调用它:

function asyncFn(callback) {  setTimeout(() => {    callback();  }, 100);}

使API不需要时使函数异步的可能原因是。例如,假设您有一个发出网络请求并缓存结果供以后调用的函数:

var cache = null;function makeRequest(callback) {  if (!cache) {    makeAjax(result => {      cache = result;      callback(result);    });  } else {    callback(cache);  }}

问题是,此功能不一致:有时它是异步的,有时不是。假设您有一个这样的消费者:

makeRequest(result => doSomethingWithResult(result));doSomethingElse();

doSomethingElse
函数可以在该函数之前或之后
doSomethingWithResult
运行,具体取决于结果是否已缓存。现在,如果您在
makeRequest
函数上使用异步原语,例如
process.nextTick

var cache = null;function makeRequest(callback) {  if(!cache) {    makeAjax(result => {      cache = result;      callback(result);    });  } else {    process.nextTick(() => callback(cache));  }}

该调用始终是异步的,并且

doSomethingElse
始终在之前运行
doSomethingWithResult



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

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

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