如何让 angular 等待 DWR 调用的响应?
How to make angular wait for response of DWR Call?
function with DWR Call
self.getUsers = function()
{
console.log("Get User called");
userProjectDWRManager.getAllUsers(function(list){
console.log(list);
return list;
});
}
var list = self.getUsers();
console.log(list) //undefined
我尝试了 promise 概念,但我不明白如何将它准确地应用于 DWR。
编辑:
整个场景就是我在
$transitions.onStart({
}, function(trans) {
// get list here from DWR call
if(list.length==0)
{
event.preventDefaults();
$state.go('register',{});
}
}
在这个函数中我想获取列表并在进入下一个状态之前等待列表return。但它总是进入下一个状态。
您可以将回调函数的引用传递给 promise 函数,以便在 promise 解决后执行。
self.getUsers = function(callback)
{
console.log("Get User called");
userProjectDWRManager.getAllUsers(function(list){
callback(list);//executes the callback function
});
}
self.getUsers(showList); //pass reference to callbak function
function showList(list){
console.log(list);
}
针对您更新的问题
$transitions.onStart({
}, function(trans) {
// get list here from DWR call
userProjectDWRManager.getAllUsers(function(list){
if(list.length==0)
{
event.preventDefaults();
$state.go('register',{});
}
else
console.log('list is Not empty');
});
});
function with DWR Call
self.getUsers = function()
{
console.log("Get User called");
userProjectDWRManager.getAllUsers(function(list){
console.log(list);
return list;
});
}
var list = self.getUsers();
console.log(list) //undefined
我尝试了 promise 概念,但我不明白如何将它准确地应用于 DWR。
编辑:
整个场景就是我在
$transitions.onStart({
}, function(trans) {
// get list here from DWR call
if(list.length==0)
{
event.preventDefaults();
$state.go('register',{});
}
}
在这个函数中我想获取列表并在进入下一个状态之前等待列表return。但它总是进入下一个状态。
您可以将回调函数的引用传递给 promise 函数,以便在 promise 解决后执行。
self.getUsers = function(callback)
{
console.log("Get User called");
userProjectDWRManager.getAllUsers(function(list){
callback(list);//executes the callback function
});
}
self.getUsers(showList); //pass reference to callbak function
function showList(list){
console.log(list);
}
针对您更新的问题
$transitions.onStart({
}, function(trans) {
// get list here from DWR call
userProjectDWRManager.getAllUsers(function(list){
if(list.length==0)
{
event.preventDefaults();
$state.go('register',{});
}
else
console.log('list is Not empty');
});
});