javascript - 将相同的上下文绑定(bind)到多个函数

标签 javascript ecmascript-6

我在类中编写了一系列 Promise:

class Executor {

    someFunction(){
        return Promise.resolve(function(){
            console.log(this.name);
        });
    };

    someOtherFunction(){
        return Promise.resolve(function(){
            console.log(this.date);
        });
    };

    execute(){
        let {someFunction, someOtherFunction} = this;
        this.name = "John";
        this.date = "Saturday";
        someFunction=someFunction.bind(this)
        someFunction().then(someOtherFunction.bind(this));
    }

}

然后我通过实例化该类并运行 execute 方法来调用它:

var e = new Executor;
e.execute();

是否有更好的方法将类的上下文绑定(bind)到多个函数,而不是编写多个 bind() 语句?

最佳答案

你真的不需要在这里破坏,这只会让事情变得复杂,KISS :

'use strict';
class Executor {
  someFunction() {
    return new Promise((resolve, reject) =>  {
      setTimeout(() => {
        console.log(this.name);
        resolve();
      }, 250);
    });
  };

  someOtherFunction() {
    return new Promise((resolve, reject) =>  {
      setTimeout(() => {
        console.log(this.date);
        resolve();
      }, 250);
    });
  };

  execute() {
    this.name = "John";
    this.date = "Saturday";
    this.someFunction()
      .then(() => this.someOtherFunction())
      .then(() => { console.log('done!'); });
  }
}

let e = new Executor();
e.execute();

请注意,您的 Promise 用法已被破坏。

关于javascript - 将相同的上下文绑定(bind)到多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33561224/

相关文章:

javascript - 单击按钮修改 <div> 容器,从 GET 请求插入 HTML

javascript - polymer JS : How to output Model data?

javascript - Ajax 调用。将值传递给另一个 php 文件

javascript - 在 Javascript ES6 中返回 JSON 对象

node.js - 通天塔与否 - 困惑

javascript - 类(class)员工

javascript - Axios 完成事件

javascript - 如何返回一个简单的 redux Action 创建者的 promise ?

javascript - 如何从 REST api 扩充数据

listview - 重新加载 ListView 不工作 React Native