首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >蓝知更鸟的承诺是否阻碍了自然界的发展?

蓝知更鸟的承诺是否阻碍了自然界的发展?
EN

Stack Overflow用户
提问于 2015-06-19 20:10:38
回答 2查看 399关注 0票数 0

我可能对承诺(尤其是蓝知更鸟)的基本功能有一点新的理解。我想要完成的是一个API服务器,它处理大量将250K+行写入数据库的过程。大约需要30分钟才能完成请求。我希望API服务器根据大容量写入的成功返回ok或error。当我不使用承诺时,我就没有机会抛出错误,因为请求不是在等待批量写入完成。然而,如果我使用允诺,错误和成功是正确的。但是,直到操作完成,服务器才会变得没有响应。简而言之,使用允诺库来处理批量写入会阻塞API服务器。

代码语言:javascript
运行
复制
function chunk(arr, chunkSize) {
  var R = [];

  for (var i=0,len=arr.length; i<len; i+=chunkSize)
    {
        R.push(arr.slice(i,i+chunkSize));
    }
  return promise.resolve(R);
}


exports.add = function(req, res) {
var PO_STD_LT_TIME = 90; //DAYS
    Parts.sync()
        .then(function() {
            return Parts.destroy({
                where: {}
            });
        })
        .then(function() {
            var workbook = XLSX.readFileSync(__dirname + '/dbo_tblCPLParts_.xlsx');
            var sheet_name_list = workbook.SheetNames;
            var JSON_S = XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]);

            var size = 40000;
            chunk(JSON_S, size).then(function(JSON_Small) {
                promise.each(JSON_Small, function (JSON_small_){
                    Parts.bulkCreate(JSON_small_)
                    .catch(function(err) {
                        res.json(500, {
                            Error: "Error : " + err
                        });
                    })

                }).finally(ext_fns.handleResult(res,200))
            })
            })

}

处理这件事最好的方法是什么?我用正确的方式履行诺言了吗?

EN

Stack Overflow用户

回答已采纳

发布于 2015-06-19 20:16:44

这是因为你一直在调用同步行为。元凶是

代码语言:javascript
运行
复制
var workbook = XLSX.readFileSync(__dirname + '/dbo_tblCPLParts_.xlsx');

相反,您应该使用fs.readFile的XLSX等价物,这是异步的。或者,由于您使用的是蓝鸟,所以您可以在XLSX模块上使用XLSX

代码语言:javascript
运行
复制
var Promise = require('bluebird')
var fs = Promise.promisifyAll(/* the XLSX module */)

这将允许您将所有XLSX模块视为承诺。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30946504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档