【发布时间】:2015-06-10 17:48:41
【问题描述】:
我有以下代码,当我在代码中输入 if 语句中 (if (that.cont) ) 我得到一个未完成的承诺链的错误,这可能是什么原因以及如何我应该避免吗?
run: function() {
var oDef = Q.defer();
var Obj = Q(sWUrl);
if (that.cont) {
Obj = that.cont.get(that.cont.transl).then(function(mSet) {
debugger;
if (mSet) {
var lang = mSet.supportedLang;
var dft = mSet.defaultLang;
if (!dft) {
if (lang) {
dft = lang.split(",")[1];
} else {
dft = "en";
}
}
return Q(sWUrl + "&lang=" + window.encodeURIComponent(lang));
} else {
return Q(sWUrl);
}
}, function() {
return Q(sWUrl);
}).then(function(sUri) {
return that.cont.se.pre.get("Pre").then(function(oPreSet) {
return sUri + "&device=" + window.encodeURIComponent(oPreSet.dte);
}).fail(function(error) {
return sUri;
});
});
}
return Obj.then(function(sUri) {
oWin.window.location.href = sUri;
return oWin.oDef.promise;
});
},
【问题讨论】:
-
return位于if之外,并且最后一个括号不会关闭此代码中的任何内容 - 中间某处有一个多余的括号。 -
@Vld - 括号在哪里,请在哪个语句之后告诉我?顺便说一句,最后一个是因为这段代码是一个大方法的一部分......
-
我已经提交了一个带有正确格式的代码的编辑 - 它可以清楚地看到什么不属于 - 它是代码块底部的最后一个右花括号。
-
你在哪里得到一个未完成的承诺链的错误?在控制台中?它是否指向任何特定的行?
-
另外,附注:您的
dft变量完全未使用。你是不是搞错了?
标签: javascript jquery promise q angular-promise