使用 Builder 和 Promises
Using Builder with Promises
我有一个 Builder class,它具有加载功能:(重要的是要注意我无法更改加载程序加载功能)
class Builder {
constructor() {
this.object = {};
}
async load(url) {
this.object = await this.loadPromise(url);
return this;
}
loadPromise(url) {
return Promise(resolve => {
resolve(new Loader().load(url));
}
}
build() {
return this.object;
}
}
当我尝试调用完整构建链时出现错误:
(intermediate Object).load(...).build is not a function
我的函数链:var object = new Builder().load('someurl.com').build();
当我调用:var object = new Builder().load('someurl.com');
然后 console.log(object);
记录的对象是构建器类型并且加载了正确的对象。
我希望能够在加载对象后调用生成器上的函数。这包括需要修改加载对象的函数。
我正在寻找令人愉悦的语义解决方案,而不是解决方法。
是时间问题。试试这个:
var object = (await (new Builder().load('someurl.com'))).build();
在 Builder class 中,load
函数是异步的,因此 returns 是一个 Promise 对象。在您的原始代码中,您试图访问未定义的 Promise 对象的 build()
方法。
我有一个 Builder class,它具有加载功能:(重要的是要注意我无法更改加载程序加载功能)
class Builder {
constructor() {
this.object = {};
}
async load(url) {
this.object = await this.loadPromise(url);
return this;
}
loadPromise(url) {
return Promise(resolve => {
resolve(new Loader().load(url));
}
}
build() {
return this.object;
}
}
当我尝试调用完整构建链时出现错误:
(intermediate Object).load(...).build is not a function
我的函数链:var object = new Builder().load('someurl.com').build();
当我调用:var object = new Builder().load('someurl.com');
然后 console.log(object);
记录的对象是构建器类型并且加载了正确的对象。
我希望能够在加载对象后调用生成器上的函数。这包括需要修改加载对象的函数。 我正在寻找令人愉悦的语义解决方案,而不是解决方法。
是时间问题。试试这个:
var object = (await (new Builder().load('someurl.com'))).build();
在 Builder class 中,load
函数是异步的,因此 returns 是一个 Promise 对象。在您的原始代码中,您试图访问未定义的 Promise 对象的 build()
方法。