【发布时间】:2014-01-16 06:50:21
【问题描述】:
我应该使用这个函数的返回值来做一些控制。即使 res 的值变为 false 的“when-then”过程的结果,hasIllegalRoute 函数返回,res 为 true。因为 jquery 是异步工作的,所以不要等待完成 when-then 操作以返回 res 的值。我该如何解决这个问题?
function hasIllegalRoute()
{
var res = true;
$.when(returnUncompletedRoute()).then(function(routeList)
{
if(routeList.length>0)
{
var uncompletedRoute = 0;
var today = new Date();
routeList.forEach(function(e)
{
var routeDate = new Date(e.ROUTE_DATE);
if(calcDay(routeDate) != calcDay(today))
{
uncompletedRoute++;
}
});
if(uncompletedRoute>0)
{
$("#errorPageRouteMenu").append("<p>Sonlandırılmamış kayıtlarınız var, bu kayıtları sonlandırmadan yeni bir rotaya başlayamazsınız</p>");
return false;
}
}
}).then(function(result)
{
res = result;
});
return res;
}
【问题讨论】:
-
return false;第一个.then()是否需要 -
是的,所以结果的值为 false 并且 res=false
-
尝试将这个:
return false;更改为这个:return res;或删除它,因为我知道return false;会停止脚本执行。
标签: javascript jquery asynchronous return-value promise