2016-05-12 28 views
0

現在、 "nodejkl.js"を実行しているときに "exports.findOneProblem"でconsole.log(result)を使用すると動作します。私は結果を見ることができます。しかし、console.log()の代わりにreturnを使用すると、コンソールでPromise {pending}が表示されます。ギャップを埋めてください....どのように約束を働くことを学ぶ、ありがとう。asyncの問題、JS Promiseは結果を返すことができませんが、console.logで動作します

//asd.js 

    exports.findOneProblem = function(problemId) { 
      return RClient.authenticate(options).then(function (client) { 
      const Problem = client.Problem; 

      return Problem.findOne(problemId) 
      }).then(function(result){ 
       return result 
      }); 
     }; 

秒ファイル:jkl.js

var okay = require('./asd'); 

var moneymoney = okay.findOneProblem(263) 

console.log(moneymoney) 


var honeyhoney = moneymoney.then(function(result){ 
    return result 
}) 
console.log(honeyhoney) 

答えて

1

あなたが約束を受信すると、あなたの同期コードのすべてが稼働して行われている、すなわち後に「後で」あなたが値を取得するつもりだことを。 Promiseによって提供される値にアクセスする方法は、.then関数を使用しています。

moneymoney.then(function(result) { 
    console.log(result); 
    // Add your code for using the result of `okay.findOneProblem(263)` here 
}); 
+1

oh my!ありがとうございました。 –

関連する問題