我一直对“然后”不被等待的行为感到困扰,我明白其原因。然而,我仍然需要绕过它。 这是我的用例。
doWork(family) {
return doWork1(family)
.then(resultOfWork1 => doWork2(resultOfWork1));
}
doWork1(family) {
if (1 === family) {
return doFamily1();
} else {
return doFamily2();
}
}
doFamily1() {
return $http(urlToFamily1)
.then(response => parseFamily1Result(response));
}
parseFamily1Result(response) {
return parsed response in a family1 way;
}
doFamily2() {
return $http(urlToFamily2)
.then(response => parseFamily2Result(response));
}
parseFamily2Result(response) {
return parsed response in a family2 way;
}
doWork2(resultOfWork1) {
// use resultOfWork1
}
我正在做的事情的问题是,在 doWork2 中,resultOfWork1 未定义,因为在到达 doWork2 之前不需要执行“then” promise 。
有没有办法保证“然后”的实现? 或者说这种做事方式有什么问题吗?
最佳答案
您错误地链接了 Promise。
而不是
doWork(family) {
return doWork1(family)
.then(doWork2(resultOfWork1));
}
更改为
doWork(family) {
return doWork1(family)
.then(function(resultOfWork1){ doWork2(resultOfWork1); });
}
或者
doWork(family) {
return doWork1(family)
.then(doWork2);
}
您还需要对以下代码进行类似的更改。
$http(urlToFamily1)
.then(parseFamily1Result(response));
$http(urlToFamily2)
.then(parseFamily2Result(response));
关于javascript - 等待 ".then"解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081738/