代码之家  ›  专栏  ›  技术社区  ›  kmansoor

所有的承诺都是平等的吗?

  •  1
  • kmansoor  · 技术社区  · 6 年前

    var someFunc = function() {
      return new Promise((resolve, reject) => {
          setTimeout(() => {
              resolve(37);
          }, 1000);
      });
    };
    
    var f1 = function() {
      return someFunc()
        .then(val => {
          return val + 1;
        });  
    }
    
    var f2 = function() {
      return new Promise(resolve => {
        someFunc()
        .then(val => {
          resolve(val + 1);
        });    
      });
    }
    
    var f3 = function() {
      someFunc().then(val => {
          return new Promise(resolve => {
              resolve(val + 1);
          });    
      });              
    };
    

    Angular 6 如果绑定变量的值在 then f1的。

    这不起作用:(UI未更新)

    public myClickHandler() {
       f1().then(val => this.uiBoundVar = val);
    }
    

    public myClickHandler() {
       f2().then(val => this.uiBoundVar = val);
       // This works too
       // f3().then(val => this.uiBoundVar = val);
    }
    

    From MDN Promise return value

    悬而未决的承诺。然后异步调用处理程序函数(onFulfilled或onRejected)(只要堆栈为空)。调用处理程序函数后,如果处理程序函数:

    返回一个值,则返回的promise将以返回值作为其值进行解析;

    0 回复  |  直到 5 年前