首先,我完全阅读了this问题的所有答案,但尽管如此我才意识到经过多年的脚本编写后,我最终陷入了aSync地狱。
我有一个使用异步函数的方法。根据该函数的结果,该方法应返回true或false。
所以,简单地说:
example = {
overview: undefined,
aSyncFunction: function (callback) {
// Adds values to overview, which we will use in otherFunction
callback();
return this;
},
otherFunction: function (data) {
var result = false;
this.aSyncFunction( function () {
var available = this.overview[data.name];
// result == filter overview with supplied data)
}.bind(this));
return result;
}
};
我已经创建了一个JsFiddle来向您展示我所处的确切情况:https://jsfiddle.net/copt436a/1/
删除setTimeOut将传递true,否则为false。
注意,我目前无法更改 aSyncFunction ,因此解决方案必须位于 otherFunction
中的某处我试图在不同的函数中分离回调函数,但在这种情况下,返回值卡在该特定函数中 otherFunction 保持返回undefined。另外使用aSyncFunction的返回值不会给我我想要的结果,因为这会返回 this 。
我完全坚持这个,可能解决方案很简单。