使用 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() 方法。