該函數不返回承諾。這個代碼提供了什麼功能?
它使用csvtojson模塊。 https://www.npmjs.com/package/csvtojson
var CSVConverter=require("csvtojson").Converter;
function get_json(cvs_file_location)
{
var data=fs.readFileSync(cvs_file_location).toString();
var csvConverter=new CSVConverter();
csvConverter.fromString(data,function(err,jsonObj){
if (err){
console.log("error msg: " + err);
return null;
}
var json_csv = clone_obj(jsonObj);
console.log(json_csv);
return json_csv;
});
}
我想將它轉換成一個返回的承諾。這是我寫的;
var Promise = require('bluebird');
var Converter = Promise.promisifyAll(require("csvtojson").Converter);
function get_json(cvs_file_location)
{
var data=fs.readFileSync(cvs_file_location).toString();
return new Converter().fromStringAsync(data)
.then(function(csvString){
var json_csv = clone_obj(csvString);
console.log(json_csv);
return json_csv;
})
.catch(function(cb) {
console.log("error msg: " + cb);
return null;
});
}
不幸的是,它不起作用。錯誤消息看起來像這樣;
return new Converter().fromStringAsync(data) ^TypeError: (intermediate value).fromStringAsync is not a function
什麼是錯的代碼?還是有另一種方式來編寫代碼來返回承諾?
如果用'括起來:'(new Converter())。fromStringAsync'換行'new Converter()'會怎麼樣? – zerkms
不幸的是,仍存在相同的錯誤 – user781486
'fromStringAsync'方法在該模塊中不存在 –