2016-05-12 47 views
0

當我在運行「node jkl.js」的同時在我的「exports.findOneProblem」中使用console.log(result)時,它目前工作正常。我能看到結果。但是,當我使用return而不是console.log()時,我得到的只是控制檯中的Promise {pending}。請填寫空白....學習如何與承諾一起工作,謝謝。異步問題,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

哦,我的!謝謝。 –