【问题标题】:How to use a promise as a method? [duplicate]如何使用 Promise 作为方法? [复制]
【发布时间】:2017-12-23 06:25:28
【问题描述】:

我有一个对象(myObject)。对于这个对象,我创建了一个返回 Promise 的方法 (objectPromise)

function myObject(){
   this.number = 2;
   this.objectPromise = function(data) {
        return new Promise((resolve, reject) => { 
            if (data == this.number) {
               resolve();
            } else {
               reject();
            }
       });
   };
 };

然后我有这个代码1)

obj = new myObject();
myPromise1
.then(obj.objectPromise)
.then(function(result){

})
.catch(function(err){

});

2)

obj = new myObject();
myPromise1
.then(function(result){
   obj.objectPromise(result)
})
.then(function(result){

})
.catch(function(err){

});

我不明白为什么 1) 没有调用我的 Promise

【问题讨论】:

  • 这很不清楚; objectPromise 是一个返回承诺的函数——这是你想要的吗?您想在这里实现什么目标?
  • 您的意思是then(obj.objectPromise)?无论如何,您的代码到处都是。一方面,this.data 不存在。此外,您不会向其他 thens 返还任何东西。
  • 对不起,我弄错了,是的,它返回了一个承诺,但我不明白的是 objectPromise 不是 Object 方法,我不必像 2) 那样编写代码跨度>
  • 实例方法。
  • @Li357 我修复了 this.data 和 obj.objectPromise,抱歉。实例方法是什么意思? .then(obj.objectPromise).then(function(result) { obj.objectPromise(result) })有什么区别

标签: javascript node.js promise es6-promise


【解决方案1】:

对于 1),您返回的是带有这一行 .then(obj.objectPromise) 的函数,而不是 promise 本身,因此它实际上从未被调用过。

基于 1)2),如果 myPromise1 返回 result,如果我正确理解问题,我认为您正在寻找更多大致如下:

obj = new myObject();
myPromise1
  .then((result) => 
    obj.objectPromise(result)
      .then((res) => {
        console.log('objectPromise success code here')
      })
      .catch((err) => {
        console.log('objectPromise fail code here')
      }))
  .catch((err) => {
    console.log('myPromise1 fail code here')
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 2015-10-08
    • 1970-01-01
    • 2016-04-28
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多