我试图在等待jQuery post请求后从服务器响应中获取头文件。
gyp verb tmpdir == cwd automatically will remove dev files after to save disk space
gyp verb command install [ '8.6.0' ]
gyp verb install input version string "8.6.0"
gyp verb install installing version: 8.6.0
gyp verb install --ensure was passed, so won't reinstall if already installed
gyp verb install version not already installed, continuing with install 8.6.0
gyp verb ensuring nodedir is created /usr/local/lib/node_modules/angular-cli/node_modules/node-sass/.node-gyp/8.6.0
gyp WARN EACCES user "nobody" does not have permission to access the dev dir "/usr/local/lib/node_modules/angular-cli/node_modules/node-sass/.node-gyp/8.6.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/local/lib/node_modules/angular-cli/node_modules/node-sass/.node-gyp"
只返回身体,而
var res = await $.post(GetUrl("/accounts"), JSON.stringify(acc));
将返回一个对象,我可以从中获取一些标题(不是全部)和正文。有没有办法解决这个问题?
答案 0 :(得分:2)
await
对它给出的对象使用then
(有点间接)。 jQuery的ajax
使用三个参数调用then
回调(而普通的promise只用一个参数调用then
个回调)。由于这种不匹配,你只能获得第一个参数jQuery的ajax
调用then
。
你可以转换返回值(这些是promises,它们是一个管道),所以你得到jQuery的ajax
调用回调的所有三件事:
const [data, textStatus, jqXHR] =
await $.post("/echo/html/", {html: "Hi there", delay: 1})
.then((data, textStatus, jqXHR) => [data, textStatus, jqXHR]);
这只是必要的,因为jQuery的异常实现。
答案 1 :(得分:0)
$.post()
的要点是方便的捷径。当您将其与await
一起使用时,如果您使用传统的Promise编码,那么您只会有效地获得传递给Promise解析回调的第一个参数:
$.post(GetUrl("/accounts"), JSON.stringify(acc))
.then(function(data, status, jqxhr) {
// ...
});
您只获得data
。如果你按上面那样编码,那么第三个参数将是你的(jQuery扩展)XHR对象。
请注意,您使用$.get()
意味着accs
将成为已退回的承诺,并且您不知道该操作已完成。