Promise正在解析但不触发Node中的.then()函数

mik*_*eym 1 node.js promise q

在解决了一个promise之后,遇到一个函数然后触发的问题.我可以console log在下面的代码中看到nunjucks回调中生成的html,所以我知道它在这一点上运行正常.然而then,在调用函数中没有任何东西回来.有什么想法是什么问题?提前致谢!

function generate(data, schema, partials) {
  var formTitle = schema.title;


  var defered = q.defer();

  nunjucks.render('test.html', { formTitle: formTitle },function(err, 
html) { 

    if (err) {
      console.log('nunjucks error ', err);
      return defered.reject();
    }
    console.log('nunjucks render ok..', html); // html logging fine here
   // This seems not to work
    q.resolve(html);
  });


  return defered.promise;

}
Run Code Online (Sandbox Code Playgroud)

这是函数调用.

formTemplater.generate(data, schema, {
    header: fs.readFileSync('./header.html', 'utf8'), 
    footer: fs.readFileSync('./footer.html', 'utf8')
}).then(function(html) {
    // nothing works here
    console.log('nunjucks back with html :: ', html);
    fs.writeFileSync('./results.html');
});
Run Code Online (Sandbox Code Playgroud)

rob*_*lep 5

这个:

q.resolve(html)
Run Code Online (Sandbox Code Playgroud)

应该是这样的:

defered.resolve(html)
Run Code Online (Sandbox Code Playgroud)