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

异步nodejs模块导出

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

异步nodejs模块导出

您的导出无法工作,因为

foo
声明在内部时,它在函数外部。但是,如果将导出文件放在其中,则在使用模块时,不能确保已定义导出文件。

使用异步系统的最佳方法是使用回调。您需要导出回调分配方法以获取回调,并在异步执行时调用它。

例:

var foo, callback;async.function(function(response) {    foo = "foobar";    if( typeof callback == 'function' ){        callback(foo);    }});module.exports = function(cb){    if(typeof foo != 'undefined'){        cb(foo); // If foo is already define, I don't wait.    } else {        callback = cb;    }}

async.function
只是一个象征异步调用的占位符。

在主要

var fooMod = require('./foo.js');fooMod(function(foo){    //Here pre using foo;});

多重回调方式

如果您的模块需要多次调用,则需要管理一个回调数组:

var foo, callbackList = [];async.function(function(response) {    foo = "foobar";    // You can use all other form of array walk.    for(var i = 0; i < callbackList.length; i++){        callbackList[i](foo)    }});module.exports = function(cb){    if(typeof foo != 'undefined'){        cb(foo); // If foo is already define, I don't wait.    } else {        callback.push(cb);    }}

async.function
只是一个象征异步调用的占位符。

在主要

var fooMod = require('./foo.js');fooMod(function(foo){    //Here pre using foo;});

承诺方式

您也可以使用Promise解决此问题。此方法通过Promise的设计支持多次调用:

var foo, callback;module.exports = new Promise(function(resolve, reject){    async.function(function(response) {        foo = "foobar"        resolve(foo);    });});

async.function
只是一个象征异步调用的占位符。

在主要

var fooMod = require('./foo.js').then(function(foo){    //Here pre using foo;});

请参阅Promise文档



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

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

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