vue获取promise中的值
方法一:async和await要一起用async res => {const result = await getPanelData('', this.from_uid);}方法二const result =getPanelData('', this.from_uid).then(function (result) { console.log(result) }...
·
- 方法一:
- async和await要一起用
async res => {
const result = await getPanelData('', this.from_uid);
}
async function test() {
let result = await getPanelData(params); //await 关键字只能放到async 函数里面
console.log(result);
}
async 会使得test()函数得到一个promise对象
不通过await,则通过then获取 test().then(res=>{})
解释:
async使得test()函数里面会return一个promise对象
await是请等待getPanelData()函数执行完毕后再将promise对象里面的值赋值给result,再执行打印
getPanelData(params)是发送请求,返回的是一个promise对象
- async 和 await 基于 promise 的。 使用 async 的函数将会始终返回一个 promise 对象。
- await 关键字只能放到async 函数里面
- 在使用 await 的时候我们暂停了函数,而非整段代码。
- async 和 await 是非阻塞的。 你仍然可以使用 Promise 例如 Promise.all()。
<script>
function displayDate(){
async function time() {
var a=await 'hello world'
console.log(520,a);
return a;
}
console.log( time().then(res=>{
console.log(res);
}));
console.log('虽然在后面,但是我先执行');
}
// 首先 执行time(),创建第一个宏任务,返回一个promise对象,第一次打印输出
// 遇到 then,创建第二个宏任务
// 第二次打印输出:虽然在后面,但是我先执行,所有微任务执行完毕,重新执行宏任务
// 第三次打印输出第一个宏任务中的a,执行完毕,无微任务后
// 第四次打印输出第二个宏任务
</script>
- 方法二
发送请求后,用then去获取promise对象的值
在vue中,一般使用axios去发送请求,axios是基于promise对象封装的ajax的第三方库,所有axios里面包含了promise对象。
let result=promise.get(url),得到的result就是一个promise对象的返回值,需要在then中获取,只需要result.then(res=>{
console.log(res) // res为promise中的值
})
const result = getPanelData('', this.from_uid).then(function (result) { console.log(result) })`
具体操作:
点击此处
具体原因:
点击看看
还不懂?点击这里
更多推荐
所有评论(0)