回调函数 - NodeJS(callback function - NodeJS)
我创建了一个简短的例子,我有一个dubt:
var request = require("request"); var url = "http://api.openweathermap.org/data/2.5/weather?q=turin&APPID=xxxxxxxxxxxxxxxxxxxxxx"; module.exports = function (callback) { request( { url: url, json: true }, function (error, response, body) { if (error) { callback("Unable to fetch weather"); // callback function } else { callback("It is " + body.main.temp + " in " + body.name); } }); console.log("After request"); };
从外部文件,我需要这个模块:
var weather = require("./weather.js"); weather(function (currentWeather) { console.log(currentWeather); });
在这种情况下,我调用一个
weather
模块,我得到一个callback
函数(它是天气模块的参数),用于在都灵打印到命令行的天气。 但它是如何工作的?i create an short example and i have a dubt:
var request = require("request"); var url = "http://api.openweathermap.org/data/2.5/weather?q=turin&APPID=xxxxxxxxxxxxxxxxxxxxxx"; module.exports = function (callback) { request( { url: url, json: true }, function (error, response, body) { if (error) { callback("Unable to fetch weather"); // callback function } else { callback("It is " + body.main.temp + " in " + body.name); } }); console.log("After request"); };
And from external file, i required this module:
var weather = require("./weather.js"); weather(function (currentWeather) { console.log(currentWeather); });
In this case, i call a
weather
module and i get acallback
function ( it is an argument of weather module ) for print into command line the weather in Turin. But how it's work?
原文:https://stackoverflow.com/questions/40113342
更新时间:2021-11-08 13:11
最满意答案
您可以使用pathconvert任务来替换“。”。 用“_”分配给一个新的属性:
<?xml version="1.0" encoding="UTF-8"?> <project> <property name="app.version" value="1.2.0"/> <pathconvert property="app.version.underscore" dirsep="" pathsep="" description="Replace '.' with '_' and assign value to new property"> <path path="${app.version}" description="Original app version with dot notation" /> <!--Pathconvert will try to add the root directory to the "path", so replace with empty string --> <map from="${basedir}" to="" /> <filtermapper> <replacestring from="." to="_"/> </filtermapper> </pathconvert> <echo>${app.version} converted to ${app.version.underscore}</echo> </project>
You can use the pathconvert task to replace "." with "_" and assign to a new property:
<?xml version="1.0" encoding="UTF-8"?> <project> <property name="app.version" value="1.2.0"/> <pathconvert property="app.version.underscore" dirsep="" pathsep="" description="Replace '.' with '_' and assign value to new property"> <path path="${app.version}" description="Original app version with dot notation" /> <!--Pathconvert will try to add the root directory to the "path", so replace with empty string --> <map from="${basedir}" to="" /> <filtermapper> <replacestring from="." to="_"/> </filtermapper> </pathconvert> <echo>${app.version} converted to ${app.version.underscore}</echo> </project>
相关问答
更多-
尝试$ANTBUILDDIR/TheBuildFile.xml因为Jenkins配置遵循Unix shell变量扩展语法。 Try $ANTBUILDDIR/TheBuildFile.xml as Jenkins configuration follows Unix shell variable expansion syntax.
-
ant的build.xml[2022-05-14]
Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令。当编译Linux内核及一些软件的源程序时,经常要用这个命令。Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似。像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷。最初Ant开发者在开发跨平台的应用时,用样也是基于这些缺陷对Ant做了更好的设计。 Ant 与 makefile Makefile有一些不足之处,比如很多人都会碰 ... -
是否有可能替换Ant的build.xml中的属性中的文本?(Is it possible to replace text in properties in Ant's build.xml?)[2023-11-23]
您可以使用pathconvert任务来替换“。”。 用“_”分配给一个新的属性:PDE工具(创建Ant构建文件)不生成ant脚本(build.xml)(PDE Tools (Create Ant build file) not generating ant script(build.xml))[2023-04-29]
如果查看工作空间.metadata目录中的.log文件,您可能会看到以下消息: Could not find valid manifest file to create ant build file “创建Ant构建文件”仅在项目中找到META-INF / MANIFEST.MF时才有效。 但是功能项目通常没有这些,所以我不明白这个代码试图做什么。 尝试使用“文件>导出>插件开发>可部署功能”。 在“选项”选项卡上,您可以要求它保存它生成的Ant脚本。 If you look in the .log fi ...您可以使用ProjectHelper类来使用构建文件来配置项目。 如果你想检查的路径包含在一个引用中,那么你可以通过它的ID从项目中获取引用。 例如,如果你在build.xml有这样的东西:input任务将允许您提示用户输入(自由格式或多选),并创建包含用户输入的属性。 The input task will allow you to prompt for user input, either free form or multiple choice, and create a property containing the user's input.如何将包含属性文件的目录添加到Ant build.xml?(How to add a directory containing properties files to an Ant build.xml?)[2022-05-13]
要在新的jar文件中包含属性文件,可以将另一个嵌套的添加到 任务中。 ... Project和ProjectHelper是用于解析蚂蚁的build.xml的2个类。 以下是解析xml的代码片段。 Project project = new Project(); File buildFile = inputFile.getFile(); project.setUserProperty("ant.file", buildFile.getAbsolutePath()); ProjectHelper projectHelper = ProjectHelper.getProjectHelper ...是不是可以将所有类文件编译到一个目录中,然后像下面那样使用复制任务来复制你想要的WSDL文件?... 通过检查提供的链接,作者已将git定义为macrodef。 所以你需要在构建文件中包含这些定义,否则Ant将无法识别git是什么:相关文章
更多- NodeJS系列-部署
- nodejs与html代码分离
- 微信公众平台NodeJs开发之路--消息处理
- 微信公众平台NodeJs开发之路--接入认证
- 两种js function 声明方式
- nodejs开发的个人网页收藏搜索网站,界面有些糟糕
- 《MLDN出品 魔乐科技Node.JS + MongoDB(JSP、HTML 、XML、JavaScript、Servlet、Struts、Ajax)视频汇总》(Node.JS + MongoDB\JSP、HTML 、XML、JavaScript、Servlet、Struts、Ajax nodejs)V2013[压缩包]
- 顶 【CF 应用开发大赛】WeBot - 微信公众平台消息接口类库(nodejs)
- function-Oceanus配置说明
- javascript函数与对象
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)