javascript - 从 Promise 返回数据

标签 javascript node.js express promise

我的主要目标是使用 PDF.js 并将解析后的 PDF 数据发送到前端。 PDF.js 库致力于 promise 并按页码从文件返回数据。这就是我的问题所在。我不太熟悉 promise 并在其中循环以返回数据。 我目前的代码如下所示:

var pdf = path.join(__dirname, '../../testoutput.pdf');
    pdfJsLib.getDocument(pdf).then(function(doc){
        var promises = [];
        for(i = 1; i <= doc.numPages; i++){
            //promises.push(doc.getPage(i));
            doc.getPage(i).then(function(page){
                promises.push(page.getTextContent());

                var response = [];
                if(i == doc.numPages + 1){
                    var promiseLimiter = promises.length;
                    Promise.all(promises).then(function(data){
                        response.push(data[0]);
                        if(promiseLimiter == doc.numPages){
                            res.status(200).json(response);
                        }
                    })
                }
            })

我正在尝试将 page.getTextContent() 信息推送到一个数组并将该数组作为响应发送,但我知道我这样做是错误的。 在这种情况下,如何使循环与 promises 一起正常工作,有什么想法吗?

最佳答案

在我看来你想做这样的事情

var pdf = path.join(__dirname, '../../testoutput.pdf');
pdfJsLib.getDocument(pdf).then(function(doc){
    var promises = [];
    var promiseLimiter ;
    for(i = 1; i <= doc.numPages; i++){
        //promises.push(doc.getPage(i));
        var p = doc.getPage(i).then(function(page){
            return page.getTextContent();

            var response = [];
            if(i == doc.numPages + 1){
                promiseLimiter = promises.length;
            }
        })
        promises.push(p);
    }
    Promise.all(promises).then(function(data){
                    if(promiseLimiter == doc.numPages){
                        res.status(200).json(data);
                    }
                })

关于javascript - 从 Promise 返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953709/

相关文章:

javascript - 如何将 JWT 用于使用 Node.js 编写的代理服务器?

javascript - 错误 : Can't set headers after they are sent in express-fileupload

javascript - 使用 express 时在 EJS View 中查找当前 url

javascript - 使用 ajax json 数据创建 highchart

javascript - 使用 JavaScript 更改字符串中字符的顺序

javascript - Sequelize $或不起作用

linux - 如何在 Linux 服务器上的端口 80 上启动 node.js?

Node.js Express 4.11.2 & socket.io 出现错误?EIO=3&transport=polling&t=

javascript - AngularJS 从 $resource 触发 $scope.broadcast

javascript - Toastr 使用 Laravel session 变量作为警报消息