In vue, await means waiting. The await keyword can only be placed in async functions. Use of await with async is equivalent to turning an asynchronous function into a synchronization. await will wait for the following expression. The next step is executed only after the result is returned.
The operating environment of this article: Windows 10 system, Vue version 2.9.6, DELL G3 computer.
Let’s talk about the usage of async first. It is placed in front of the function as a keyword to indicate that the function is an asynchronous function, because async means asynchronous , an asynchronous function means that the execution of the function will not block the execution of the following code. Write an async function
async function timeout() { return 'hello world'; }
The syntax is very simple. Just add the async keyword in front of the function to indicate that it is asynchronous. How to call it? The async function is also a function. We can use it how we usually use the function. Just call it directly with parentheses. In order to show that it does not block the execution of the code behind it, we add the sentence
console.log; async function timeout() { return 'hello world' } timeout(); console.log('虽然在后面,但是我先执行');
after the async function call. Open In the browser console, we see
The async function timeout is called, but there is no output. It should not return 'hello world'. Don't worry, take a look at what the timeout() execution returns? Change the timeout() statement above to console.log(timeout())
async function timeout() { return 'hello world' } console.log(timeout()); console.log('虽然在后面,但是我先执行');
Continue to look at the console
It turns out that the async function returns a Promise object, if we want to get the promise return value, we should use the then method and continue to modify the code
async function timeout() { return 'hello world' } timeout().then(result => { console.log(result); }) console.log('虽然在后面,但是我先执行');
Look at the console
## We get "hello world', At the same time, the execution of timeout does not block the execution of the following code, which is consistent with what we just said. At this time, you may notice that the Promise in the console has a resolved, which is the internal implementation of the async function Principle. If there is a value returned in the async function, when the function is called, the Promise.solve() method will be called internally to convert it into a promise object as a return, but what if an error is thrown internally in the timeout function? Then it will be called Promise.reject() returns a promise object, then modify the timeout functionasync function timeout(flag) { if (flag) { return 'hello world' } else { throw 'my god, failure' } } console.log(timeout(true)) // 调用Promise.resolve() 返回promise 对象。 console.log(timeout(false)); // 调用Promise.reject() 返回promise 对象。
timeout(false).catch(err => { console.log(err) })
// 2s 之后返回双倍的值
function doubleAfter2seconds(num) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(2 * num) }, 2000); } ) }
async function testResult() { let result = await doubleAfter2seconds(30); console.log(result); } testResult();
async function testResult() { let first = await doubleAfter2seconds(30); let second = await doubleAfter2seconds(50); let third = await doubleAfter2seconds(30); console.log(first + second + third); }
vue.js Tutorial"]
The above is the detailed content of What is the usage of await in vue?. For more information, please follow other related articles on the PHP Chinese website!