2016-12-15 4 views
-1

Я хочу сделать структуру вроде: В моих проектах существует один файл, содержащий все файлы. Каждый файл содержит некоторую функцию exports. Теперь каждый файл зависит друг от друга, поэтому нужно звонить один за другим sequential. Возьмите ответ предыдущего файла и на основе этого выполните следующий процесс файла. Я не хочу использовать require() и callback() в каждой функции/файлах.NodeJS не требует функции вызова файла внутри этого файла. Это возможно?

app.js

try { 
    fiber(function() { 
     var obj1 = await(someAsyncMethod(defer())); 
     var obj2 = await(anotherAsyncMethod(obj1, defer())); 
     var result = await(lastAsyncMethod(obj2, defer())); 
    }); 
} catch(err) { 
    //TODO Handle error 
} 

Пожалуйста, дайте мне связанное решение.

+0

Пожалуйста, попробуйте изменить свой вопрос. Неясно, что вы хотите знать и чего вы на самом деле хотите достичь или избежать. В нынешнем виде ваш вопрос не вызывает большого чувства. –

+0

@ t.niese Я действительно хочу использовать 'module.exports' в каждом файле, чтобы получить значение' return' из этой функции и использовать возвращаемое значение в другой функции. Все они управляют всеми файлами из одного файла. – higunjan

ответ

0

Если вам нужно позвонить по одному последовательно, вы всегда можете использовать ASYNC с waterfall, это гарантирует, что каждый передаст свои результаты на следующий. Однако, если какая-либо из задач передает ошибку в свой собственный обратный вызов, следующая функция не выполняется, и основной обратный вызов немедленно вызывается с ошибкой.

async.waterfall([ 
    function(callback) { 
     callback(null, 'one', 'two'); 
    }, 
    function(arg1, arg2, callback) { 
     // arg1 now equals 'one' and arg2 now equals 'two' 
     callback(null, 'three'); 
    }, 
    function(arg1, callback) { 
     // arg1 now equals 'three' 
     callback(null, 'done'); 
    } 
], function (err, result) { 
    // result now equals 'done' 
});