AngularJs $http 请求保持挂起,不从数据库返回值
Posted
技术标签:
【中文标题】AngularJs $http 请求保持挂起,不从数据库返回值【英文标题】:AngularJs $http request stays pending and does not return value from the database 【发布时间】:2020-06-01 07:36:22 【问题描述】:我目前正在编写一条路线,该路线允许我从数据库中存储的过程中接收信息。我已经在 AngularJS 中编写了一个请求,在 NodeJS 中编写了一个路由,但我只是在 chrome 网络开发人员窗口中收到了一个待处理的请求。我可以看到 NodeJs 应用程序中的 console.log 具有我需要的数据,因此它已检索到它,但 AngularJS 应用程序的任何控制台日志中都没有返回任何内容。
这里是 angularJS 应用和 Node 应用的代码:
AnglaurJS:
checkForReplenishmentEmptyTrolley = async () =>
LIBRIS.extensions.openLoadingModal();
console.log('in checkForReplenishmentEmptyTrolley');
try
const varPromise = await $http.get(`$LIBRIS.config.stockServicestockMovement/checkForUnattachedTrolley`)
.then((response) =>
console.log(response);
// Request completed successfully
, (error) =>
// Request error
console.log(error);
);
console.log(varPromise.data);
// 1. check that there are no ghost replenish - lines 1-15
console.log('in try/catch');
console.log('promise', varPromise);
catch (error)
console.log(error);
,
NodeJS 代码:
app.get(`$ROUTE/attachTrolley`, async function(req, res)
const newRequest = await DB.newRequest();
console.log('we have made it to the route');
try
console.log('we have made it to the Try/Catch route');
newRequest.input();
const record = await newRequest.execute('dbo.usp_STK_CheckForUnattachedTrolley');
res.json(record)
console.log(record, 'record');
catch (err)
handleError(res, err);
console.log(err);
);
【问题讨论】:
async
/await
返回的 ES6 承诺未与 AngularJS 框架集成。 AngularJS 通过提供自己的事件处理循环来修改正常的 javascript 流程。这将 JavaScript 拆分为经典和 AngularJS 执行上下文。只有在 AngularJS 执行上下文中应用的操作才能受益于 AngularJS 数据绑定、异常处理、属性监视等。
【参考方案1】:
问题是您正在对等待的承诺执行.then
并且没有从中返回任何内容。这里有两个选择
从那时起返回响应,因此当您尝试在此处访问值时 console.log(varPromise.data);
它可以工作。
或者删除.then
alltogather,因为它不是必需的,因为您正在等待它。
基本上就是这样做
checkForReplenishmentEmptyTrolley = async () =>
LIBRIS.extensions.openLoadingModal();
console.log("in checkForReplenishmentEmptyTrolley");
try
const varPromise = await $http.get(`$LIBRIS.config.stockServicestockMovement/checkForUnattachedTrolley`);
console.log(varPromise.data);
// 1. check that there are no ghost replenish - lines 1-15
console.log("in try/catch");
console.log("promise", varPromise);
catch (error)
console.log(error);
;
希望这能解决您的问题。
【讨论】:
【参考方案2】:解决了!我的路线中没有返回声明!
【讨论】:
以上是关于AngularJs $http 请求保持挂起,不从数据库返回值的主要内容,如果未能解决你的问题,请参考以下文章
Angular Custom Async Validator 保持挂起状态
切换前置罕见摄像头时,HTML5 视频元素请求永远保持挂起状态(在移动设备上的 chrome 上)
Angular HTTPClient (HTTP) 请求永远挂起