gpt4 book ai didi

javascript - node.js - grunt - 从回调返回解析的数据

转载 作者:行者123 更新时间:2023-12-02 16:48:58 25 4
gpt4 key购买 nike

我想使用API​​蓝图并通过grunt自动制作它。我想读取 apiary(API 蓝图工具)文件,解析它(使用 Protagonist,它是 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() 方法接受异步执行的回调。您无法像在同步方法中那样从回调中返回值,因为您不知道它将何时执行。解决方案是将“返回”逻辑放在回调中。

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);
});

});

关于javascript - node.js - grunt - 从回调返回解析的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26850437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com