【问题标题】:Promise is resolving but not triggering .then() function in NodePromise 正在解决但未触发 Node 中的 .then() 函数
【发布时间】:2017-10-08 04:41:45
【问题描述】:

在 promise 解决后,让函数的 then 触发时遇到问题。我可以在下面的代码中的 nunjucks 回调的 console log 中看到生成的 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;

}

这是函数调用。

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');
});

【问题讨论】:

    标签: node.js promise q


    【解决方案1】:

    这个:

    q.resolve(html)
    

    应该是这样的:

    defered.resolve(html)
    

    【讨论】:

    • 感谢您的及时回复。我之前尝试过 defered.resolve() 但我认为我打错了所以它不起作用..duh。但是再次尝试并成功了。干杯!
    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 2019-02-27
    • 2019-02-18
    • 2015-11-08
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    相关资源
    最近更新 更多