promsie 与异步调用

我想通过promise异步的给obj新增一个abc的方法,当我调用test1.abc()的时候浏览器意外的报错了abc这个方法还不存在,想了一下报错是合情合理的。promise是异步执行,而最初的var obj = {}是同步执行,obj没有abc这个属性。哪怕是实例化的时候先调用obj.init()依然没用。我应该如何正确的调用test1.abc()。

var ppk = new Client(/Service/);

    function test() {
        var obj = {};
        obj.init = function() {
        return new Promise(function(resolve,reject) {
            resolve(5)
        }).then(function(value) {
            obj.abc = function() {
                alert(123)
            }
        })
    }
    obj.init();
    return obj;
    }
    var test1 = new test();
    test1.abc()
阅读 2.3k
1 个回答
function test() {
  var obj = {};
  obj.init = function() {
    return new Promise(function(resolve, reject) {
      return resolve(5);
    }).then(function(value) {
      obj.abc = function() {
        alert(123);
      };
    });
  };
  return obj;
}
var test1 = new test();
test1.init().then(function() {
  test1.abc();
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题