我有承诺和npm" streamToPromise"包。 首先 - 我有不同的功能,当所有这些功能都解决后,我想调用最后一个函数。但是在我的代码中 - 它只是在没有通过" streamToPromise"
内的iffs的情况下执行{{1}}
我一直试图了解Promise几周,但总有一些错误我不明白。真的很感激一些帮助!
答案 0 :(得分:2)
func1
和func2
实际上并不起作用;他们承诺你立即创造。
你可能希望那些是返回承诺的函数。
您也不想打电话给他们并将结果传递给then()
;你想自己传递这些功能。
答案 1 :(得分:2)
您已创建func1
func2
等,但它们不是功能,它们是已经创建的承诺"因此,new Promise
执行程序中的代码立即被调用
你希望func1等是函数,然后使它们成为函数
var func1 = function() {
return new Promise(function(resolve, reject) {
// get's executed without reason
// do something
if (var1 && var2) {
resolve(true);
}
});
}
var func2 = function() {
return new Promise(function(resolve, reject) {
// get's executed without reason
// do more
if (var3 && var4) {
resolve(true);
}
});
}
streamToPromise(stream).then(function(operation) {
if (varX && varY) {
func1()
.then(func2)
.then(func3)
.then(funcFinal)
.catch(function(error) {
// console log error
}
}
}
});
答案 2 :(得分:0)
原因是方法被称为
使用这种方式
.then(function () {
return func2();
}).then( ...)
为了在func2()和func3()中你需要返回Promise对象
或使用(没有paranthesis)
.then(func2).then(func3)