如何检查meteor.call方法成功运行?

时间:2016-10-08 00:00:00

标签: javascript reactjs asynchronous meteor

我正在使用流星/反应。我有两个组成部分。我想从一个方法传递方法:

saveNewUsername(newUsername) {
    Meteor.call('setNewUsername', newUsername, (error) => {
        if(error) {
            Materialize.toast(error.reason, 4000);
        } else {
            Materialize.toast('Username changed!', 4000);
        }
    });
}

而且我需要检查它是否成功:

    handleSaveOption() {
        const { howToChangeOption } = this.props;
        const optionValue = this.option.value.trim();
        if(howToChangeOption(optionValue)) {
            this.setState((prevState) => ({
                startToChange: !prevState.startToChange,
            }));
        }
    }

那么,如何检查Meteor.call是否成功并返回true or false?谢谢!

1 个答案:

答案 0 :(得分:0)

解决了承诺。也许有人有更好的解决方案

    saveNewUsername(newUsername) {
        return new Promise((resolve, reject) => {
            Meteor.call('setNewUsername', newUsername, (error) => {
                if(error) {
                    Materialize.toast(error.reason, 4000);
                    reject();
                } else {
                    Materialize.toast('Username changed!', 4000);
                    resolve();
                }
            });
        });
    }

    handleSaveOption() {
        const { howToChangeOption } = this.props;
        const optionValue = this.option.value.trim();
        howToChangeOption(optionValue).then(() => {
            this.setState((prevState) => ({
                startToChange: !prevState.startToChange,
            }));
        });
    }
相关问题