gpt4 book ai didi

javascript - 这段 promise 函数的代码有什么问题?

转载 作者:行者123 更新时间:2023-12-02 15:27:20 24 4
gpt4 key购买 nike

此函数不返回 promise 。

它使用 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;
});
}

我想将其转换为返回 promise 的形式。这是我写的;

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

代码有什么问题吗?或者是否有另一种方法来编写返回 promise 的代码?

最佳答案

您必须 promise Converterprototype 因为它是一个构造函数。如果 Converter 对象直接具有要 promisified 的函数(就像大多数 API 的情况)。

var fs = require('fs');
var Promise = require('bluebird');
var Converter = require('csvtojson').Converter;
Promise.promisifyAll(Converter.prototype);

var converter = new Converter();
converter.fromStringAsync(fs.readFileSync('foo.csv', 'utf8'))
.then(console.log)

关于javascript - 这段 promise 函数的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33579870/

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