如何解决将Builder与Promises一起使用
我有一个具有加载功能的Builder类:(请注意,我无法更改加载程序的加载功能)
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;
}
}
当我尝试调用完整的构建链时,出现错误消息:
(中间对象).load(...)。build不是函数
我的功能链:var object = new Builder().load('someurl.com').build();
当我依次呼叫:var object = new Builder().load('someurl.com');
和console.log(object);
时,所记录的对象属于builder类型,并且已加载正确的对象。
我希望能够在加载对象后在Builder上调用函数。这包括需要修改已加载对象的功能。 我正在寻找一种令人愉悦的语义解决方案,而不是一种解决方法。
解决方法
这是时间问题。试试这个:
var object = (await (new Builder().load('someurl.com'))).build();
在Builder类中,load
函数是异步的,因此返回Promise对象。在您的原始代码中,您尝试访问Promise对象的build()
方法,该方法未定义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。