63 lines
1.4 KiB
Vue
63 lines
1.4 KiB
Vue
<template>
|
||
<ciy-header title="Promise极简示例"></ciy-header>
|
||
<view>
|
||
<view class="txt-center py4">
|
||
<button class="btn long" @tap="prom(true)">请求Promise success</button>
|
||
</view>
|
||
<view class="txt-center py4">
|
||
<button class="btn long" @tap="prom(false)">请求Promise fail</button>
|
||
</view>
|
||
<view class="ciy-card" style="padding:1em;">
|
||
Result: {{msg}}
|
||
</view>
|
||
<view class="px4 py1" v-for="item in log" :key="item">{{item}}</view>
|
||
</view>
|
||
</template>
|
||
|
||
<style>
|
||
</style>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
msg: '--',
|
||
log: []
|
||
}
|
||
},
|
||
onLoad() {},
|
||
watch: {},
|
||
computed: {},
|
||
methods: {
|
||
async prom(ret) {
|
||
this.msg = '... ...';
|
||
var res = await this.dopromise({
|
||
ret: ret
|
||
});
|
||
this.log.unshift('prom: ' + res);
|
||
console.log('prom', res);
|
||
this.msg = res ? res : 'undefined';
|
||
},
|
||
async dopromise(opt) {
|
||
return new Promise((resolve, reject) => {
|
||
this.log.unshift('run 1');
|
||
console.log('run 1');
|
||
setTimeout(() => {
|
||
if (opt.ret)
|
||
resolve('success');
|
||
else
|
||
return reject('fail');
|
||
this.log.unshift('result 3');
|
||
console.log('result 3');
|
||
}, 1000);
|
||
this.log.unshift('run 2');
|
||
console.log('run 2');
|
||
}).catch(e => {
|
||
this.log.unshift('catch 4: ' + e);
|
||
console.log('catch 4', e);
|
||
return e; //不返回,res为 undefined
|
||
});
|
||
}
|
||
}
|
||
}
|
||
</script> |