grunt-从回调返回解析的数据
grunt - return parsed data from callback
我想使用API蓝图,并用grunt自动制作它。我想读取apiary(API蓝图的工具)文件,解析它(使用Protactor,即Node.js的API蓝图解析器),将其字符串化为JSON格式并写入另一个文件。这是一项简单的任务,但我不知道如何做,我总是得到未定义的结果。以下是我目前所拥有的:
grunt.registerTask('apiary2js', 'Generate js version of apiary file.', function () {
var parser = require('protagonist');
var content = grunt.file.read('apiary.apib');
var blueprint = parser.parse(content, function (error, result) {
if (error) {
console.log(error);
return;
}
return result.ast; <-- (how to return this value?)
});
var json = JSON.stringify(blueprint);
grunt.file.write('test/frontend/apiary.js', "var apiary = " + json);
});
apiary.js中的结果是:
var apiary = undefined
您遇到的问题是parser.parse()
方法接受异步执行的回调。您不能像在同步方法中那样从回调返回值,因为您不知道它何时执行。解决方案是在回调中放置"return"逻辑。
grunt.registerTask('apiary2js', 'Generate js version of apiary file.', function () {
var parser = require('protagonist');
var content = grunt.file.read('apiary.apib');
// Parse the contents of the file & execute the callback when done parsing.
parser.parse(content, function (error, result) {
if (error) {
console.log(error);
return;
}
// Now we can use the result as desired.
var json = JSON.stringify(result.ast);
grunt.file.write('test/frontend/apiary.js', "var apiary = " + json);
});
});
相关文章:
- JSON数组数据返回Undefined
- AngularJS中的页面之间共享数据返回空
- post()向服务器动态生成的数据返回空响应
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- d3从mysql数据库导入数据返回“0”;未定义”;
- JSON可以't访问数据返回未定义
- 让 ajax 数据返回到调用函数 - 需要澄清之前的答案
- ajax 调用 PHP 数据返回 VM92:1 未捕获语法错误:意外的标记 {.
- Jquery ajax 请求无法将数据返回给其他函数
- 在 jquery 中将数据返回给 ajax 调用
- Meteor.methods:从内部回调将数据返回给客户端
- 将PHP数据返回到我当前的网页,供Javascript访问
- ajax 调用如何将数据返回给变量
- 将数据返回到索引.js节点表达式
- j查询帖子数据返回比较不起作用
- 节点 API 未将数据返回给客户端 ajax 请求
- jQuery 函数在 AJAX 数据返回上不起作用
- AJAX 将数据返回给 jquery
- 中继:获取递归数据返回空值
- 根据chrome.storage中的数据返回chrome.webRequest.onBeforeRequest的值