2017-01-04 7 views
0

ユーザーがボタン(#lfdsubmit)をクリックすると、約束を返す関数(LFD_SearchContainer())が呼び出されます。しかし、エラーはで発生します"ハンドラで約束が作成されましたが返されませんでした"

LFD_SearchContainer('EISU1870725') 
.then(container => { 
    ST2.db2(container); 
}) 

何が問題なのですか? コード:(完全にこのコードをご案内するためにコメントアウト部分を信用していない - 私はそれらのいくつかを更新するのを忘れて)

機能LFDTrack(){

function LFD_SearchContainer (requestedContainer) { 
    return new Promise((resolve, reject) => { 
     let lfd_scanparams = { TableName: 'lfd_table1' } 
     db.scan(lfd_scanparams, (err, containers) => { 
      if (err) { 
       reject(err); 
      } else { 
       containers = containers.Items; 

       let requestedContainers = []; // different variable than arg 

       let containerObject; // this will be the resolved object 

       // this will return the object of the searched container 
       let findIt = _.forEach(containers, container => { 
        if (container.container === requestedContainer) { 
         containerObject = container; 
        } 
       }); 
       containerObject = findIt[0]; 
       //console.log(findIt[0]); 
       resolve(containerObject.container); 
      } 
     }); 
    }); 
} 

$(function() { 
    $("#lfdsubmit").click(function (e) { 
     e.preventDefault(); 

     let lsd_modaltitle = $("#lfdmodaltitle"); 
     let lsd_modalcontent = $("#lfdmodalcontent"); 

     LFD_SearchContainer('EISU1870725') 
     .then(container => { 
      ST2.db2(container); // will send the object 
     }) 
     .catch(error => { 
      console.log(error); 
     }); 
    }); 
}); 

}

答えて

1

ST2.db2(container);は約束を返した場合、あなたはそれは、あなたがこのように、その背後にreturn null;を置くことができていない場合は

return ST2.db2(container); 

にその行を変更する必要があります。

ST2.db2(container); 
return null; 

あなたはST2の定義を提供しなかったので、私はdb2方法は約束を返すかどうかを知ることができません。 :)

このエラーはbluebird hereの作者によって説明されています。

+0

「null」を戻すと、問題は解決されました。 Thx – Chris

+0

@Chris:この質問が解決されるように私の答えを受け入れてください:) – leroydev

関連する問題