2017-05-02 50 views
0

我想要習慣承諾。 My Parse Server環境總是返回一個promise,但是我需要將Parse函數與一些我自己的函數混合使用,我希望按照Parse的方式工作。在NodeJS中使用承諾(解析服務器)

這裏是我的代碼

savePrescription(user, prescription) 
    //Returning an object (working!) to be passed to the next function. 
     .then(function(savedProgData) { 
      console.log(savedProgData) <-- undefined! 
      getSavedData(savedProgData) 
     }) 
     .then(function(savedIds) { 
      console.log(savedIds); <-- undefined! 
      sendClientProgrammes(savedIds) 
     }) 
     .then(function(returnedData) { 
      console.log(returnedData); 
      response.success(); 
     }, function(err) { 
      response.error(err); 
     }) 

    function sendClientProgrammes(savedIds) { 
     console.log('running send client programmes'); 
     return new Promise(function(resolve, reject) { 
      return resolve(); 
     }) 
    } 

    function getSavedData(savedProgData) { 
     console.log('running getSavedData'); 
     return new Promise(function(resolve, reject) { 
      var savedIds = []; 
       for(var i = 0; i < savedProgData.length; i++) { 
        savedIds.push(savedProgData[i].id) 
       } 
       if(savedIds.length > 0) { 
        console.log(true); 
        return resolve(savedIds); 
       } else { 
        reject(); 
       } 
     }) 
    } 

在這我得到一個錯誤{code: 107, message: "The server returned an invalid response."}結束。

我怎樣才能 'promisfy' 我的標準JS功能?

回答

3

你需要這樣的承諾會傳遞到返回你的函數的結果。

.then(function(savedProgData) { 
    return getSavedData(savedProgData) 
}) 
+0

好了的作品!可惡!! – Taylorsuk