Javascript 在promise(Node.js)(OpenTok)中使用回调转换函数

Javascript 在promise(Node.js)(OpenTok)中使用回调转换函数,javascript,node.js,express,opentok,tokbox,Javascript,Node.js,Express,Opentok,Tokbox,我的实际代码(有效!) 我创建了一个带有回调的函数,用于为OpenTok创建会话和生成令牌,并将其自身导出到应用程序 功能 //依赖项 var opentok=需要('./ot')。opentok; var apiKey=要求('./ot')。apiKey; var apiSecret=require('./ot').apiSecret; //定义变量 无柄变异体; var代币; //定义createnewsession函数 var newSession=函数(回调){ //创建会话(允许Op

我的实际代码(有效!)

我创建了一个带有回调的函数,用于为OpenTok创建会话和生成令牌,并将其自身导出到应用程序

功能

//依赖项
var opentok=需要('./ot')。opentok;
var apiKey=要求('./ot')。apiKey;
var apiSecret=require('./ot').apiSecret;
//定义变量
无柄变异体;
var代币;
//定义createnewsession函数
var newSession=函数(回调){
//创建会话(允许OpenTok)
createSession({mediaMode:“中继”},函数(err,session){
如果(错误)抛出错误;
否则{
//定义会话对象
var objSession={};
//获取会话ID
objSession.sessionId=session.sessionId;
//调用生成令牌函数
newTok(对象会话、回调);
}
});
}
//定义生成令牌函数
var newTok=功能(obj,fn){
//生成令牌(允许OpenTok)
令牌=opentok.generateToken(obj.sessionId);
//在令牌变量中存储对象(obj.tokenId)
obj.tokenId=令牌;
//在函数上下文中定义“obj”
fn(obj);
}
//使用sessionId和令牌导出新会话

module.exports.credentials=newSession最小方法如下(见
***
注释):

请注意,我并没有承诺ify
newTok
,尽管我们可以。不清楚为什么
newTok
接受回调,而回调中没有任何内容是异步的,并且它是一个私有函数

使用它看起来像这样:

newSession(/*...parameters...*/).then(
    function(result) {
        // All is good, use result
    },
    function(err) {
        // Error occurred, see `err`
    }
);

为什么
newTok
接受回调,而回调中没有异步,而且是一个私有函数?或者
opentok.generateToken
是异步的,而
newTok
只是调用不正确?newTok隐式函数(generateToken)需要createSession函数的“sessionId”,这是异步的。如果
opentok.generateToken
是异步的,那么
newTok
调用不正确(除非
token
是一个承诺?在这种情况下,
token
/
tokenId
是一个稍微有点误导性的名称)。我删除了newTok中的回调,因为它不是异步的(async是createSession)而且工作得很好!我怎么能在应用程序中使用呢?我已经删除了newTok函数中的回调函数,并起作用了。@UlisesVargasDeSousa:当我需要promise
var-credentialsPromise=require('./credentialsPromise').credentialsPromise;
并在控制台
console.log(credentialsPromise)中打印时,上面添加了使用示例;
抛出
[Function]
。但是,我应该在应用程序中的什么地方调用承诺?@UlisesVargasDeSousa:在顶部?我想应该是
credentialsprowance()。然后(有趣);
newSession(/*...parameters...*/).then(
    function(result) {
        // All is good, use result
    },
    function(err) {
        // Error occurred, see `err`
    }
);