2

我正在尝试使用 co 和生成器读取 JSON 文件。test.json包含:

{
  "hello": "world"
}

这通过jsonlint了,所以它应该是有效的。这是我目前的代码:

#!/usr/bin/env node --harmony
var co = require('co'),
  fs = require('fs'),
  thunkify = require('thunkify');

var read = thunkify(fs.readFile);
var JSONParse = thunkify(JSON.parse);

var log = console.log.bind(console);

co(function *(){
  var fileContents = yield read('test.json', 'utf-8');
  var works = yield JSONParse(fileContents)
  log(works)
})()

仅记录一个空对象。然而fileContents已经满了,所以它似乎是 JSON.parse 部分被破坏了。我究竟做错了什么?

4

1 回答 1

2

傻我,JSON.parse 是 sync。所以不需要包裹。

var fileContents = yield read('public/data/works.json', 'utf-8');
log(JSON.parse(fileContents))
于 2014-04-20T19:06:50.070 回答