2015-10-16 3 views
-1

У меня есть функция, которая должна возвращаться только после вызова ее внутренней функции. Как? Пожалуйста, проверьте код ниже -Как отложить возврат внутренней функции?

function a() { 
    function b() { 
    } 
return something//this something has to be returned only after function b is called. b is called from another file. 
} 
+1

Предполагая, что вы имеете дело с обработкой асинхронной в 'b', вы не можете сделать это .. вместо того, чтобы возвращаться, вы должны использовать механизмы обещания/обратного вызова –

+0

@ArunPJohny - я понимаю. Но я не могу использовать обещание отложить в другом файле, который вызывает функцию b. это ограничение. –

+0

, тогда вы не можете с этим поделать –

ответ

1

Вы должны использовать something в качестве обратного вызова b, то он будет работать, как вы хотите. Другим способ использует обещание:

var promise = new Promise(function(resolve, reject) { 
    // run function b 

    if (/* everything turned out fine */) { 
    resolve(); 
    } else { 
    reject(); 
    } 
}); 

Затем вы можете использовать then если обещание было выполнено:

promise.then(function(result) { 
    return something; 
}, function(err) { 
    console.log("Failed"); 
});