this question has answer here:
- how convert existing callback api promises? 17 answers
my actual code (that works!)
i've created function callback create sessions , generate tokens opentok, exports application.
the function
//dependencies var opentok = require('./ot').opentok; var apikey = require('./ot').apikey; var apisecret = require('./ot').apisecret; //define variables var sessionid; var token; //define create newsession function var newsession = function(callbacks){ //create session (that allows opentok) opentok.createsession({mediamode:"relayed"}, function(err, session){ if(err) throw err; else { //define session object var objsession = {}; //obtain sessionid objsession.sessionid = session.sessionid; //call generate token function newtok(objsession,callbacks); } }); } //define generate token function var newtok = function(obj, fn){ //generate token (that allows opentok) token = opentok.generatetoken(obj.sessionid); //store object (obj.tokenid) in token variable obj.tokenid = token; //define "obj" in function context fn(obj); } //export new session sessionid , token module.exports.credentials = newsession;
the app
// dependencies var express = require('express'); var server_port = process.env.port || 3000; var apikey = require('./ot').apikey; //obtain default apikey var credentials = require('./credentials').credentials(fun); //function export "credentials" (the function) function fun(obj) { //define app var app = express(); //use "public" static folder app.use(express.static(__dirname + '/public')); //initialize app init(); //routing app.get('/', function(req, res) { //rendering variables in views res.render('index.ejs', { apikey: apikey, sessionid: obj.sessionid, token: obj.tokenid }); }); //define init function init() { app.listen(server_port, function() { console.log('the app running in localhost:' + server_port); }); } }
that want:
how convert function creates sessions , generates tokens in promise can use app?
update (08/01/2016) (14:53 vet)
i've exported function module in app follow:
// dependencies var express = require('express'); var server_port = process.env.port || 3000; var apikey = require('./ot').apikey; //obtain default apikey var credentialspromise = require('./credentialspromise').credentialspromise(); //obtain promise console.log(credentialspromise);
and throw in console:
promise { <pending> }
how should use promise in app?
the minimal approach follows (see ***
comments):
var newsession = function(){ // *** return promise return new promsie(function(resolve, reject) { opentok.createsession({mediamode:"relayed"}, function(err, session){ // *** reject on error if (err) { reject(err); } else { var objsession = {}; objsession.sessionid = session.sessionid; // *** have newtok call `resolve` object when done newtok(objsession, resolve); } }); }); };
note didn't promise-ify newtok
, though could. it's not clear why newtok
accepts callback when nothing in asynchronous , it's private function.
using looks this:
newsession(/*...parameters...*/).then( function(result) { // good, use result }, function(err) { // error occurred, see `err` } );
Comments
Post a Comment