如果我没有正确使用.spread
法蓝鸟承诺在Sails.js模式工作时,我不知道。下面是我有:蓝鸟诺传播方法返回类型错误
transactionAsync('BEGIN')
.then(function() {
return Model.findOne({ id: 5) });
})
.then(function(results){
if(!results) {
return res.notFound();
}
crypto.randomBytes(24, function(err, buf) {
if(err) throw new Error(err);
var token = buf.toString('hex');
// This is where it fails
return [results, token];
});
})
.spread(function(results, token) {
// It doesn't get to log these
console.log(results, token);
...
})
...
第二.then
返回[results, token]
(该密码回调的内部)后,吐出
[TypeError: expecting an array, a promise or a thenable]
我删除了代码的其余部分.spread
后,因为它不是真正相关的,这就是执行停止之前返回一个错误。
我只想results
和token
传递变量的.spread
里面的功能。我究竟做错了什么?
任何帮助都很好。谢谢。
你确定你停止执行.spread()? – 2015-04-03 00:40:13
是的,它不会执行'.spread()'内部的代码,并且我确信在返回之前,密码中的任何内容都会实际运行。我猜,也许我不应该把异步代码像crypto.randomBytes放在promise中?或者也许只是让crypto.randomBytes成为承诺链的一部分。 – Lester 2015-04-03 00:44:46
只需放置一些console.log()并跟踪执行停止的位置?这里你的错误是指示任何then()函数或者spread()都没有得到预期的参数,所以可能会有一些地方你的流程返回为未定义的。 – 2015-04-03 00:58:37