2017-04-25 55 views
2

我正在嘗試創建一個返回承諾的函數,以便它可以鏈接在一起並與其他一些函數集成。如何從不公平的PUT請求中返回承諾

當我嘗試運行,我得到以下錯誤: TypeError: Cannot read property 'then' of undefined

我可以把裏面的承諾或.end它需要整個函數體周圍包裹?可以像這樣正確處理錯誤嗎?

index.js

const module = require('./module'); 

var test = { 
    name: "Full Name" 
}; 

module.update(test).then((response) => { 
    console.log(response); 
}); 

module.js

const unirest = require('unirest'); 

module.exports = { 

update: function({name}) { 
    unirest.put(someURL) 
    .headers({ 
     'Content-Type': 'application/json' 
    }) 
    .send({ 
     name: name 
    }) 
    .end(function (response) { 
     return new Promise((resolve, reject) => { 
     if(response) { 
      resolve(response) 
     } 
     if(error){ 
      reject(response) 
     } 
     }) 
    }); 
}; 

回答

3

你的函數的根應該是一個迴歸的承諾。

update: function(name) { 
    return new Promise((resolve, reject) => { 
    unirest.put(someURL) 
     .headers({ 
     'Content-Type': 'application/json' 
     }) 
     .send({ 
     name: name 
     }) 
     .end(function (response) { 
     if(response) { 
      resolve(response) 
     } 
     if(error){ 
      reject(response) 
     } 
     }) 
    }); 
}