javascript - async.waterfall 不会在最后呈现

标签 javascript asynchronous sequelize.js waterfall

我尝试使用 async.waterfall 来清理我的代码。我有两个问题,这是我的代码。

async.forEachOf(req.files, (value, key, callback) => {
  imagesController.create(req, res, idCreation, req.files[key].filename, imageData[key].ext)
})  

async.waterfall([
  function(callback) {
   exhibitionController.create(req,res, idCreation, req.body.exhibitionName, req.body.galery, req.body.exhibitionBegin, req.body.exhibitionEnds)
 },
 function(exhibition, callback) {
  creationsController.findThisCreation(req, res, idCreation)
}],

function(err, creation) {
  if(!err){
      res.send(creation)
  }
}) 

使用此代码,一切都在我的数据库中设置,数据被保存,
但是瀑布末尾的 res.send(datas) 不起作用。相反,我的页面仍在加载表单。

另一个问题是代码的优化:我试图在瀑布函数中插入 forEach ,但是除了我的图像之外,所有数据都被保存了。

我还尝试在 forEach 函数的 done 内部进行渲染,实际上我做了所有这些事情来等待图像。但是问题几乎一样,页面不渲染。

最佳答案

我终于解决了它,但这不是小菜一碟......
我必须承认我并不完全满意,我访问图像和展览结果只是因为我在创建它们时将它们插入选项卡中。
我希望这是瀑布许可证,等待接合处自行完成,然后才能在瀑布尽头创建,....
这很奇怪,因为当我通过项目列表页面访问数据时,我的选项卡与里面的所有数据相连。它是同一个 setter/getter 。
我必须更多地工作才能找到真正好的解决方案。

这是我的瀑布:

 async.waterfall([
  function(callback) {
   callback(null, creationsController.create(req, res, true))
  },
  function(creation, callback) {
    creation.then(function(crea){
         idCreation = crea.get('id');
         callback(null, exhibitionController.create(req,res, idCreation, req.body.exhibitionName, req.body.galery, req.body.exhibitionBegin, req.body.exhibitionEnds))
    })
 },
 function(exhibition, callback){
         exhibition.then(function(exhi){
             exhibitions = exhi;
             callback(null, async.forEachOf(req.files, (value, key, callback) => {
                    images.push(value);
                    callback(null,
                      imagesController
                         .create(req, res, idCreation, req.files[key].filename, imageData[key].ext));
          })) 
         })
 },
 function(images, callback) {
        callback(null, creationsController.findThisCreation(req, res, idCreation))
}], function(err, creation) {
  if(!err){
    creation.then(function(result){
       result.Images.push.apply(result.Images, images);
       result.Exhibition.push.apply(result.Exhibition, exhibitions);
       res.send(result);
    })
  }else{
      res.send(err)
  }
}) 

关于javascript - async.waterfall 不会在最后呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115844/

相关文章:

javascript - nicedit 格式未通过 jquery $.get 传递

c# - 如何取消异步调用?

c# - Asp.Net异步页面停止其他请求

node.js - nodejs 使用 hasmany 对连接 2 表进行 Sequelize

javascript - 如何将数据访问器添加到 JavaScript 中的现有属性?

javascript - 使用javascript删除表的行

.net - 我在哪里可以找到 ThreadPool.SwitchTo 方法?

mysql - 相同模型的 2 个外键的关联关联

node.js - 包含在 包含在 Sequelize 中

javascript - SetTimeout 和 Promise.resolve 不输出字符串,而是输出字符串的数值,为什么?