簡體   English   中英

帶有異步瀑布/ Node.js的未定義“回調”

[英]Undefined 'callback' with Async Waterfall / Node.js

我正在嘗試使用Async在Node.js中使用瀑布,但我一直收到錯誤

回調(null,articleDataSafe,req); ^ TypeError:未定義不是函數

代碼如下

async.waterfall([
                        function sanitizeData (articleData, req, callback) {

                                articleDataSafe = sanitizeArticle(articleData);
                                console.log('s1');
                                callback (null, articleDataSafe, req);

                        },

                        function _validateData (articleDataSafe, req, callback) {

                               var errors = validateArticle(articleData);
                               var err = null;
                               if(errors.length > 0){
                                    // return error messages back to the browser
                                    err = JSON.stringify({'error': errors, "message": "fail"});
                                 };
                                console.log('s2');

                               callback (err, articleDataSafe, req);

                        },

                        function _saveArticle (articleDataSafe, req, callback) {

                                // work out the tags hash
                                var tags = articleDataSafe['tags'];
                                var tagsArray = tags.split(",");
                                tagsArray.sort();
                                var tagsString = tagsArray.join(); 
                                var hashedTags = sha512(tagsString);
                                articleDataSafe['hashedTags'] = hashedTags;

                                // then save the articles
                                var savedArticle = saveArticle(req, articleDataSafe);

                                console.log('s3');

                                if(!savedArticle){
                                    var err = JSON.stringify({'error': 'notSaveArticle', 'message': 'fail'});
                                }

                                callback (err, articleDataSafe);

                        },

                        function _saveTags (articleDataSafe, callback) {

                                var tagsDone = saveTags(articleDataSafe);

                                if(tagsDone.length > 0){
                                    // return error messages back to the browser
                                    var err = JSON.stringify({'error': tagsDone, "message": "fail"});
                                 };
                                console.log('s4');

                                callback (err, articleDataSafe);

                        },

                        function _saveTagSets (articleDataSafe, callback) {

                                var tagSetsDone = saveTagSets(data);

                                if(tagSetsDone.length > 0){
                                    // return error messages back to the browser
                                    var err = JSON.stringify({'error': errors, "message": "fail"});
                                 };
                                console.log('s5');

                                callback (err, articleDataSafe);

                        }
                    ], function (error, success) {

                        var responseMessage = {'error': '', "message": "success"};

                        if (error) { 
                            responseMessage = error; 
                        } 

                        res.end(JSON.stringify(responseMessage));

                    });

任何人都可以解釋出什么問題了。 我已經嘗試了很長時間了,以使其無法正常運行。

任何幫助將不勝感激。

謝謝,Cs1h

除了回調外,第一個函數不會傳遞任何其他參數 您需要像這樣開始:

async.waterfall([
    function sanitizeData (callback) {
//                        ^^^^^^^^^^ no articleData, no req
        articleDataSafe = sanitizeArticle(articleData);
        console.log('s1');
        callback (null, articleDataSafe, req);
    },
    …

但是我懷疑您根本不需要異步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM