2016-07-09 7 views
0

私は別のファイルに2つの関数を用意しています。 requireを設定したり、関数を呼び出したり、引数を渡したりすることに問題があります。どこが間違っていますか?ノードが複数のファイルに分割された非同期ウォーターフォールルート

route.js

router.get('/bothFunctions', require('./bothFunctions') 

bothFunctions.js

var async = require("async") 
module.exports = function(req, res, next) { 
    var userName = req.user.username 
    var oneFunction = require('./oneFunction') 
    var twoFunction = require('./twoFunction') 
    var asyncFinally = function(err, results) { 
    if(err) return res.send(err) 
    return res.send(results) 
    } 
    async.waterfall([oneFunction(userName), twoFunction], asyncFinally) 
} 

oneFunction.js

var request = require("request") 
module.exports = function(userName, callback) { 
    request('/address', function(err, res, body) { 
    if(err) return (err, null) 
    // do stuff with userName 
    return(null, arg2) 
    } 
} 

twoFunction.js

var request = require("request") 
module.exports = function(err1, arg2, callback) { 
    if(err1) return("error", null) 
    request('/address', function(err2, res, body) { 
    if(err2) return (err2, null) 
    // do stuff with arg2 
    return(null, "success") 
    } 
} 

答えて

0

あなたの滝の機能は次のように変更する必要があります。 js

var request = require("request") 
module.exports = function(arg2, callback) { 
    request('/address', function(err2, res, body) { 
    if(err2) return (err2, null) 
    // do stuff with arg2 
    return(null, "success") 
    } 
} 
+0

ありがとうEbrahim!私はまた、返品に誤りが間違って入力したように見えます。そこに助けをありがとう! – JasonA

+0

@JasonAようこそ。 2つの問題があります。 1)機能1の誤った使用。 2)誤ったパラメータが間違っています。あなたの問題が解決したら、私の答えを親切に受け入れてください –

0

私が持っていた問題はasync.waterfallでした。滝の最初の関数に引数を渡すためには、次のとそれらをバインドする必要があります。 oneFunction.js

var request = require("request") 
module.exports = function(username){ 
return function(callback) { 
    request('/address', function(err, res, body) { 
    if(err) return (err, null) 
    // do stuff with userName 
    return(null, arg2) 
    } 
} 
} 

twoFunction:

async.waterfall([async.apply(oneFunction, "Name"), twoFunction], asyncFinally) 
関連する問題