Javascript 如何使用async/await返回Ajax结果?

Javascript 如何使用async/await返回Ajax结果?,javascript,jquery,ajax,asynchronous,async-await,Javascript,Jquery,Ajax,Asynchronous,Async Await,为了熟悉async/await,我在Chrome中尝试了以下代码: async function f() { return await $.get('/'); }; var result = f(); 但是result不保存结果(字符串);相反,它有一个需要再次等待的承诺。此代码确实为我提供了响应字符串: var response = await $.get('/'); 如何使用wait从函数返回实际响应字符串 function f() { return $.get('/

为了熟悉
async/await
,我在Chrome中尝试了以下代码:

async function f() { 
     return await $.get('/');
};
var result = f();
但是
result
不保存结果(字符串);相反,它有一个需要再次等待的承诺。此代码确实为我提供了响应字符串:

var response = await $.get('/');
如何使用wait从函数返回实际响应字符串

function f() { 
  return $.get('/');
};

async test() {
  var x = await f()
  console.log(x)
}

test()


async/await
只是编写相同逻辑的另一种方式。

await
async
基本上只是
Promise
之上的语法糖。如果你最后得到了一个
承诺
,你仍然需要像对待
承诺一样对待它

const response = f().then(() => { });
或者,如果在异步函数内部调用它,可以等待解决:

async function main() {
  const response = await f();
  console.log(response);
}
我喜欢使用的一种模式是将我的主代码包装在一个自动执行的异步函数中,因此我仍然可以使用wait:

(async () => {
  const result = await doSomething();
  console.log(result);
})();
请注意,即使使用该模式,我也需要一个最终的
catch()
来捕获它可能存在的任何错误,否则就无法捕获这些错误:

(async () => {
  // blah blah
})().catch(() => {});

async/await不能神奇地解决异步函数返回的问题。在某个地方,你仍然需要等待结果。在这种情况下,您需要在
result
var result=await f()上使用
.then()将很好地工作。那么我在f()中添加的额外wait有什么作用?@user3599803你是什么意思?在我上面的代码中,我写了
return wait$.get('/')
f()
中,此等待是否无效?是的,当您调用
f()
方法时,此等待无效。如果您想在
f()
中编写更多的代码行,您的等待将是有意义的:
f(){let res=await$.get('/');console.log(res)}
(async () => {
  // blah blah
})().catch(() => {});