【发布时间】:2017-10-30 08:40:31
【问题描述】:
我正在创建这个 es6 类来组织文件夹中的文档,并且该类有一个用户应该使用的方法:go,例如:
const options = {
// options here.
};
const organizer = Organizer("path/to/folder", options);
// example
organizer.go().then(() => {
}).catch(console.error);
在 go 方法中,我使用 Promises 来控制我需要做的事情的流程:
class Organizer {
constructor(path, options) {
this.path = path;
this.options = options;
}
go() {
return Promise.resolve(getListOfFiles())
.then(doSomethingOne)
.then(doSomethingTwo)
.then(etc)
}
getListOfFiles() {
// use this.path to get list of files and return in a Promise way (resolve, reject)
return new Promise((resolve, reject) => {
});
}
doSomethingOne(files) {
// something sync
return .....;
}
doSomethingTwo(files) {
// something async
return new Promise((resolve, reject) => {
// ....
});
}
etc() {
}
}
而且我想知道使用 Promises 控制执行流程是否做错了,我从来没有真正使用 OOP 范式进行编程,我一直使用 FP,但在这种情况下,几个地方都需要选项.
谢谢。
【问题讨论】:
-
Promise 是处理异步操作的合适方式。
go()不需要return它创建的承诺,这样你就可以像你的例子一样说organizer.go().then(...)吗? -
是的!抱歉,我已经解决了。
-
对于初学者,您需要在创建实例时使用
new,如const organizer = new Organizer("path/to/folder", options);。 -
好的,但是将 Promises 与 OOP 结合使用的重点是什么?
-
当您有需要监控或协调的异步操作时,您可以选择 Promise。当您有一个要封装数据/方法的对象时,您选择使用 OOP。您可能会选择将两者一起使用(取决于方法的作用),但它们是完全独立的概念,您选择每一个都有其自身的原因。
标签: javascript node.js oop functional-programming ecmascript-6