javascript等待异步返回ajax结果

时间:2018-01-29 17:05:42

标签: javascript jquery ajax asynchronous async-await

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

async function f() { 
     return await $.get('/');
};
var result = f();

result不保存结果(字符串),而是保留Promise,需要再次等待。 但是这段代码确实给了我响应字符串:

var response = await $.get('/');

如何使用await返回函数的实际响应字符串?

2 个答案:

答案 0 :(得分:3)

或者

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

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

test()

f().then(function(res) {
    console.log(res)
}

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

答案 1 :(得分:0)

awaitasync基本上只是Promise之上的语法糖。如果您最后得到Promise,则仍需将其视为Promise

const response = f().then(() => { });

或者,如果你在异步函数中调用它,你可以等待解决它:

async function main() {
  const response = await f();
  console.log(response);
}

我喜欢使用的模式是将我的主代码包装在自执行的异步函数中,所以我仍然可以使用await:

(async () => {
  const result = await doSomething();
  console.log(result);
})();

请注意,即使使用该模式,我也需要一个最终catch()来捕捉它可能没有发现的任何错误:

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