Javascript 承诺返回未定义

Javascript 承诺返回未定义,javascript,node.js,promise,bluebird,Javascript,Node.js,Promise,Bluebird,我知道不能使异步函数同步运行,但是 我如何在我的承诺链中添加某种顺序 一个结果依赖于前面的promise值,当这不发生时,我会得到一个未定义的错误。这是一个http请求,因此它依赖于外部因素,如我的连接执行请求的速度等 module.exports.movieCheck = function(authToken) { return request({ method : 'GET', uri : 'https://graph.facebook.com/' + profileID +

我知道不能使异步函数同步运行,但是 我如何在我的承诺链中添加某种顺序

一个结果依赖于前面的promise值,当这不发生时,我会得到一个未定义的错误。这是一个http请求,因此它依赖于外部因素,如我的连接执行请求的速度等

module.exports.movieCheck = function(authToken) {
return request({
    method : 'GET',
    uri : 'https://graph.facebook.com/' + profileID + '/posts?fields=message&limit=25&' + authToken
    }).spread(function (response, body) {
        console.log('https://graph.facebook.com/' + profileID + '/posts?fields=message&limit=25&' + authToken);
        return body;
    }, function(e) {
        console.log(e);
});
};
我调用上面的方法如下。但是,console.log返回未定义的

movieCheck.getToken()
.then(function(token) {
  movieCheck.movieCheck(token);
})
.then(function(movies) {
  console.log(movies); //should print json data
});   
终端打印

undefined
https://graph.facebook.com/.../posts?fields=message&limit=25&access_token=....

试着从第一个回复承诺,然后再回复

movieCheck.getToken()
    .then(function (token) {
    return movieCheck.movieCheck(token);
}).then(function (movies) {
    console.log(movies); //should print json data
});

在使用承诺链时,避免
.catch
块捕获异常会让您付出很多代价