小程序中使用async

小程序中使用async,第1张

    在小程序开发时,衡胡我们请求数据,就需要使用promise或者async处理异步请求,避免掉入回调地狱。而async号称是解决回调地狱的最终方案,平时我也是比较喜欢使用的,但是作为es7的语法,小程序的开掘判发者工具貌似不支持es7

那么要如何让开发工具支持呢?

(注:不可全局引入,否则无效)

该方法存在兼容性,若要适配某些旧的手机或者小程序时,请勿使用判拦改本方法

2.使用promise处理异步

3.使用async

async await方法属于ES7语野岁法,在小程序开发工具中如果勾选es6转es5, 会报错:巧枣

避免报错颂宽睁,可以引入 regenerator

<!--pages/search/search.wxml-->

<van-search

  value="{{ value }}"

  placeholder="请输入搜索关键词"

  show-action

  input-align="center"

  bind:search="onSearch"

  bind:cancel="onCancel"

  bind:change="onChange"

    background="#4fc08d"

/>

<ListItem itemList="{{itemList}}" />

<view wx:if="{{kong}}" style="padding: 20pxtext-align: center">无更多数据</view>

<van-toast id="van-toast" />

{

  "usingComponents": {

    "van-search": "@vant/weapp/search/index",

    "ListItem":"/components/ListItem/ListItem",

    "van-toast": "@vant/weapp/toast/index"

  },

  "navigationBarTitleText": "搜索",

  "enablePullDownRefresh": true,

  "onReachBottomDistance": 0

}

const { goodsHttp } = require('../../http/api')

import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast.js'

Page({

    data: {

        value: ''念激,

        itemList:[],

        page:1,

        kong:false,

        isloding:true

    },

    onLoad(){

        this.init()

        if(this.data.isloding)return this.init()

    },

    async init(){

        try{

            this.setData({

                isloding:false

            })

            wx.showLoading({

              title: '别急哦~',

            启岁})

            let {goods:{data}} = await goodsHttp({title:this.data.value,

            page:this.data.page})

            data.forEach(r=>r.description='书籍是人类进步的电梯书籍是人类进步的电梯书籍是人类进步的电梯')

            if(this.data.page==1){

                this.data.itemList = []

            }

            this.setData({itemList:[...this.data.itemList,...data]})

            if(!data.length){

                this.setData({

                    kong:true

                })

            }

            else{

             this.setData({

                 kong:false

             })

            }

            Toast.clear()

            wx.hideLoading()

            this.setData({

                isloding:true

            })

        }catch(err){

            console.log(err)

        }

    },

    onReachBottom(){

        this.data.page++

        this.init()

    },

    onChange(e) {

        this.setData({

            value: e.detail,

        })

    },

    onSearch() {

        this.data.page = 1

        this.init(this.data.value)

        console.log('搜索' + this.data.value)

    },

    悄高睁onCancel() {

        /* encodeURIComponent('微信小程序') 转码 

        decodeURIComponent("%E4%BD%A0%E6%98%AF%E5%82%BB%E9%80%BC") 解码

        */

        this.data.value = ''

        this.init()

        this.data.page = 1

        console.log('取消' + this.data.value)

    },

    onPullDownRefresh: function () {

                this.data.page=1

                this.init()

            },

})

<!--components/ListItem/ListItem.wxml-->

<block wx:for="{{itemList}}" wx:key="index">

    <view class="flex item" bindtap="go" data-url="{{item.cover_url}}">

        <image class="img1" src="{{item.cover_url}}"></image>

        <view class="row">

            <view class="title">

                {{item.title}}

            </view>

            <view class="dec {{item.price?'van-multi-ellipsis--l2':'van-multi-ellipsis--l3'}}">

                {{item.description}}

            </view>

            <view class="common-sty" wx:if="{{item.price}}">

                <text>价格:{{item.price}}</text>

                <text>销量:{{item.sales}}</text>

                <text>收藏人数:{{item.collects_count}}</text>

            </view>

        </view>

    </view>

</block>

/* components/ListItem/ListItem.wxss */

/* @import '@vant/weapp/common/index.wxss' */

@import '/miniprogram_npm/@vant/weapp/common/index.wxss'

.flex{

    display: flex

  }

.item{

    padding:5px

}

.img1{

    width: 120px

    height: 120px

    display: block

    border-radius: 5px

}

.row{

    flex:1

    height: 120px

}

.title{

    padding:10px

    text-overflow: ellipsis

    display: -webkit-box

    -webkit-line-clamp: 1

    word-break: break-all

    -webkit-box-orient: vertical

    height:14px

    overflow: hidden

}

.dec{

    padding: 0 10px

    margin-top: 10px

}

.common-sty{

    font-size: 12px

    padding:10px

    color:rgb(66, 64, 64)

}

.common-sty text{

    margin-right: 10px

}

{

    "component": true,

    "usingComponents": {}

}

// components/ListItem/ListItem.js

Component({

    /**

     * 组件的属性列表

     */

    properties: {

        itemList:{

            type:Array,

            value:[{

                cover_url:"https://oss.shop.eduwork.cn/product/2020-0820-5f3e15bc69891.png",

                title:"人类的书籍",

                description:"人类进步的阶梯人类进步的阶梯"

            }]

        },

    },

    /**

     * 组件的初始数据

     */

    data: {

    },

    /**

     * 组件的方法列表

     */

    methods: {

        go(e){

            let url = e.currentTarget.dataset.url

            wx.navigateTo({

              url: '/pages/web/web?url='+url,

            })

        }

    }

})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12292602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存