Написание / преобразование метеорных синхронных функций

Это беспокоило меня какое-то время, поэтому я подумал, что просто проведу быстрый тест на это:

Если у вас есть нормальный модуль nodeJS или что-то еще, и у него есть асинхронная функция на стороне сервера. Как мне сделать это синхронно. Например, как бы я преобразовал nodejs fs.stat асинхронная функция к синхронной.

например, у меня есть

серверная часть js

Meteor.methods({
    getStat:function() {
        fs.stat('/tmp/hello', function (err, result) {
            if (err) throw err;
            console.log(result)
        });
    }
});

Если я позвоню от клиента, я вернусь undefined как мой результат, потому что результат в обратном вызове.

1 ответ

Существует функция (недокументированная), которая называется Meteor.wrapAsync,

Просто оберните функцию

Meteor.methods({
    getStat:function() {
        var getStat = Meteor._wrapAsync(fs.stat);

        return getStat('/tmp/hello');
    }
});

Теперь вы получите результат этого в result вашей Meteor.call, Вы можете преобразовать любую асинхронную функцию с обратным вызовом, где первый параметр является ошибкой, а второй - результатом.

Другие вопросы по тегам