在请求承诺中链接多个调用

时间:2016-10-02 03:04:38

标签: javascript node.js express request

如何在快递路由中将多个then与相应的catch链接起来。

我当前的用例是multupart form更新的一部分我需要将图像上传到云并通过API更新细节,然后删除之前的图像。 有3种不同的电话。如果有任何错误,我会收到Error: Can't set headers after they are sent.。看起来res.jsonnext正在创建一些问题

  1. 是否首选使用以下方法进行我的方案?

    var rp  = require('request-promise');
    var multer  = require('multer');
    var storage = multer.memoryStorage();
    var upload = multer({ storage: storage });
    
    app.post('/api/update-details', upload.single('image'), function(req, res, next){
    
       function uploadImage(){
           //uploadToCloud is a dummy function to denote fileupload
           uploadToCloudApi(function(err,data){
               if(err) {
                    res.json({'msg': 'Image Upload Failed'})
               }
    
           })
       }
    
    
       function updateDetails(){
          updateApi(function(err,data){
               if(err) {
                    res.json({'msg': 'Image Upload Failed'})
               }
    
           })
       }
    
       function deletePreviousImage(){
            deleteFromCloudApi(function(err,data){
               if(err) {
                   log.error(err);
               }
    
           })
           next();
       }
    
       function updateSiteError(){
    
       }
    
       var options = { // url and other options };
        rp(options)
            .then(uploadImage)
            .then(updateDetails)
            .then(deletePreviousImage)
            .catch(updateSiteError); // How to write proper catch methods for each function ?
    
    
    })
    

0 个答案:

没有答案