单例模式的异步数据
Async data for singleton pattern
我被要求创建一个单例,该单例将具有对它持有的某些数据进行操作的方法。数据是从附近的 CSV 文件加载的,但我找不到以异步方式执行此操作的方法。
这是原版 JavaScript 作业。
我有这个 CSV 文件,我只想加载/读取一次,然后 "hold" 在我的单例中。由于所有单身人士的方法都考虑这些数据,我认为没有理由在开始时多次阅读它。
由于读取(和解析)它是一个异步工作,一些预期的方法也是如此,我找不到正确的方式/地点/方法来完成它。
搜索互联网表明,如果我选择创建一个 class,则构造函数不能是异步的。
IIFE 模式对我也不起作用...
我目前没有代码,因为不幸的是似乎没有任何效果。
非常感谢任何帮助!
您可以向您的 class 添加一个方法,该方法构建一个 class 的实例,其中包含获取 CSV file.an 所需的数据 file.an 示例是这样的:
class Importer{
private importerInstance: Importer
private constructor(private csvData){
...
}
// returns an instance of the importer
static async composeInstance(path to CSV){
... retrieve file content asynchronously
if(!this.importerInstance) {return new Importer(<result of async csv fetching>)} else {return this.importerInstance}
}
}
如果有任何意义,请告诉我。我可以尝试为您做一个更详细的示例
有几种方法可以做到这一点。各种方法都可以,看个人喜好。
1。静态方法
class CsvHandler {
static readFile(fileName) {
return new Promise(resolve => {
const instance = new CsvHandler()
// Process your csv file here
resolve(instance);
}
}
}
const csvHandler = CsvHandler.readFile('fileName.txt')
2。工厂方法
class CsvHandler {}
class CsvFactory {
readFile(fileName) {
return new Promise(resolve => {
const instance = new CsvHandler()
// Process your csv file here
resolve(instance);
}
}
}
var csvFactory = new CsvFactory(),
csvHandler = csvFactory.readFile('fileName.txt')
我被要求创建一个单例,该单例将具有对它持有的某些数据进行操作的方法。数据是从附近的 CSV 文件加载的,但我找不到以异步方式执行此操作的方法。
这是原版 JavaScript 作业。 我有这个 CSV 文件,我只想加载/读取一次,然后 "hold" 在我的单例中。由于所有单身人士的方法都考虑这些数据,我认为没有理由在开始时多次阅读它。 由于读取(和解析)它是一个异步工作,一些预期的方法也是如此,我找不到正确的方式/地点/方法来完成它。 搜索互联网表明,如果我选择创建一个 class,则构造函数不能是异步的。 IIFE 模式对我也不起作用...
我目前没有代码,因为不幸的是似乎没有任何效果。
非常感谢任何帮助!
您可以向您的 class 添加一个方法,该方法构建一个 class 的实例,其中包含获取 CSV file.an 所需的数据 file.an 示例是这样的:
class Importer{
private importerInstance: Importer
private constructor(private csvData){
...
}
// returns an instance of the importer
static async composeInstance(path to CSV){
... retrieve file content asynchronously
if(!this.importerInstance) {return new Importer(<result of async csv fetching>)} else {return this.importerInstance}
}
}
如果有任何意义,请告诉我。我可以尝试为您做一个更详细的示例
有几种方法可以做到这一点。各种方法都可以,看个人喜好。
1。静态方法
class CsvHandler {
static readFile(fileName) {
return new Promise(resolve => {
const instance = new CsvHandler()
// Process your csv file here
resolve(instance);
}
}
}
const csvHandler = CsvHandler.readFile('fileName.txt')
2。工厂方法
class CsvHandler {}
class CsvFactory {
readFile(fileName) {
return new Promise(resolve => {
const instance = new CsvHandler()
// Process your csv file here
resolve(instance);
}
}
}
var csvFactory = new CsvFactory(),
csvHandler = csvFactory.readFile('fileName.txt')