Итак, я пытаюсь создать свой первый webapp с интеграцией Facebook (используя facebook-node-sdk). У меня есть простые вызовы api, но теперь пришло время поставить все это на простом сервере и сделать запросы по запросу (это не будет сам webapp, а скорее сервер API).Bluebird.js в узлах и асинхронных вызовах api
Проблема я бегу в том, что, несмотря на то, что я (предположительно) используется для bluebird Promisify в Facebook SDK и мой makeCall
метод, я все еще получаю «привет» печатается, а затем «неопределенные» - console.log
вызывается до того, как makeCall может что-то вернуть.
Вот мой app.js
:
var Promise = require('bluebird')
, http = require('http')
, Facebook = Promise.promisifyAll(require('facebook-node-sdk'))
, config = require('./config')
, fb = new Facebook({ appId: config.fb.api, secret: config.fb.secret });
var makeCall = new Promise.method(function (username) {
return fb.api(username, function(err, data) {
console.log('hi')
if (err) return err;
return data;
});
});
http.createServer(function (req, res) {
makeCall('/me').then(console.log)
}).listen(8001);
Ну, цель 'makeCall' чтобы определить мой апи вызов вне создания сервера для возможно, повторно использовать позже. Однако я признаю, что «новый Promise.method» не нужен. –
@charlieg no Я имею в виду, что вы можете просто называть 'fb.apiAsync' вместо создания обертки – Esailija
Ah okay. Однако мой вопрос действительно связан с использованием обещаний, и возможность использования функций разрешения/отклонения действительно важна для меня здесь. –