天气查询第一篇

项目场景:

基于鸿蒙系统做的天气查询项目

项目场景:
网络获取每个城市的天气数据,将数据根据天气展示出来.第一步将数据能够通过网络获取的数据显示出来

问题描述

获取天气的数据,使用异步获取时,为什么不直接使用request.then()?

原因分析:

request.request(url) 表示调用了 request 对象的 request 方法,并且传入了 url 参数。
这个方法返回的 result 应该是一个 Promise 对象,因此可以使用 .then() 方法来处理这个 Promise。
request.then() 这种写法是不正确的,因为 .then() 是 Promise 对象的方法,而不是 request 对象的方法。


解决方案:

提示:这里填写该问题的具体解决方案:

import { weathermodel } from '../viewmodel/weathermodel'
import http from '@ohos.net.http'
class getWeatherUtil{
    getWeather(citycode:number){
        return new Promise<weathermodel>((reslove,reject)=>{
        let request =http.createHttp()
    let url='https://restapi.amap.com/v3/weather/weatherInfo?city=${citycode}&key=41ac10c2a94bb7121c8e7c41d2be30e3&extensions=all'
    //获取数据,因为是异步获取所以res才是要获取的数据
    let result=request.request(url)
    result.then((res)=>{
      if(res.responseCode===200){//说明数据返回成功
        console.log(res.result.toString());
        reslove(JSON.parse(res.result.toString()))
    }
    })
      .catch((err)=>{
        console.log(err)
      })
  })
}
async getWeathers(citycode:Array<number>){
    let promises:Array<Promise<weathermodel>>=[]
    for(let i=0;i<citycode.length;i++){
      promises.push((this.getWeather(citycode[i])))
    }
    await Promise.all(promises).then(result=>{
      for(const element of result){
        console.log(element.forecast[0].city)
      }
    })
  }
}
let getweatherUtil=new getWeatherUtil()
export default getweatherUtil as getWeatherUtil     

测试:

测试:
1.

let getweather=new getWeatherUtil()
export default getweather as getWeatherUtil


import getweatherUtil from "../viewmodel/getWeaterUtil"
@Entry
@Component
struct Index {

  build() {

      Column() {
        Button("测试").fontSize(40)
          .onClick(()=>{
            getweatherUtil.getWeather()
          })
      }
  }
}

测试结果:

测试成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值