async/await class constructor

背景:期望在新建类时调后台接口对类进行配置,配置成功后才可以执行其他操作。

尝试封装类的构造函数为async/await,报错

Class constructor may not be an async method

原因:async函数返回值为promise,而构造函数返回值为object,同一个函数不可能返回值同时为promiseobject

解决:参考 jQuery's ready()方法

1. 类实现

    class myClass {
        constructor () {

        }

        async ready (callback) {
            await yourHttpRequest();
            // 回调函数绑定作用域
            callback.bind(this)();
        }
    }

2. 调用

    const myObj = new myClass();
    myObj.ready(function() {
        // 保证配置完才能执行其他操作
    });

参考:https://stackoverflow.com/questions/43431550/async-await-class-constructor

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注