365bet地区365bet地区的承诺

365bet地区了解如何使用365bet地区 Promises和并行加载多个REST负载

s塞尔吉奥·德尔阿莫

365bet地区版本 4.0.1

365bet地区培训

365bet地区培训由创建并积极维护365bet地区框架的人们开发和交付

入门

您将需要什么

要完成本指南,您将需要以下内容

  • 花些时间在你手上

  • 体面的文本编辑器或IDE

  • 安装了JDK或更高版本JAVA首页适当配置

如何完成指南

要开始,请执行以下操作

要么

365bet地区指南存储库包含两个文件夹

  • 初始初始项目通常是一个简单的365bet地区应用程序,其中包含一些其他代码,可以帮助您快速入门

  • 完成一个完整的示例它是按照指南中介绍的步骤进行操作并将这些更改应用于文档的结果。初始

要完成指南,请转到初始

  • 光盘进入grails指南grails异步诺言初始

并按照下一节中的说明进行操作

您可以直接前往完成的例子如果你光盘进入grails指南grails异步诺言已完成

初始项目

初始365bet地区文件夹包含在365bet地区指南中开发的示例365bet地区应用程序消费并测试第三方REST API.

它包含用于调用开放式天气地图API检索城市的天气预报

OpenWeathermap服务当前天气发出网络请求并使用接收到的JSON有效载荷构建对象

目标是显示预测网格

城市

编写申请

365bet地区添加了365bet地区,并且由于是外部项目,365bet地区的异步功能旨在简化框架内的并发编程,并包括Promises和统一事件模型的概念

您的项目已包含异步依赖项

建立gradle
编译"org grails插件异步"

365bet地区可以在以下位置找到365bet地区异步功能文档异步grails组织.

热门城市

添加美国最大城市的课程

src main groovy演示LargestUSCities groovy
演示 常规转换CompileStatic

静态编译
 美国最大的城市 {

    上市 静态的 最后 清单<城市'纽约市',
            '洛杉机',
            '芝加哥',
            '休斯顿',
            '费城',
            '凤凰',
            '圣安东尼',
            '圣地牙哥',
            '达拉斯',
            '',
            '奥斯丁',
            '杰克逊维尔',
            '印第安纳波利斯',
            'San Francisco',
            '哥伦布',
            '沃思堡',
            '夏洛特',
            '底特律',
            '步骤',
            '孟菲斯',
            '波斯顿',
            '西雅图',
            '丹佛',
            '华盛顿州',
            '',
            '巴尔的摩',
            '路易斯维尔·杰斐逊',
            '波特兰',
            '俄克拉荷马州',
            '密尔沃基',
            '',
            '阿尔伯克基',
            '图森',
            '弗雷斯诺',
            '',
            '长滩',
            '堪萨斯州',
            '桌子',
            '弗吉尼亚海滩',
            '亚特兰大',
            '科罗拉多温泉',
            '',
            '奥马哈',
            '迈阿密',
            '奥克兰',
            '塔尔萨',
            '明尼阿波利斯',
            '克利夫兰',
            '威奇托',
            '阿灵顿',
            '新奥尔良',
            '贝克斯菲尔德',
            '坦帕',
            '火奴鲁鲁',
            '阿纳海姆',
            '极光',
            '',
            '圣路易斯',
            '',
            '基督的身体',
            '匹兹堡',
            '列克星敦·费耶特',
            '斯托克顿',
            '辛辛那提',
            '圣保罗',
            '托莱多',
            '纽瓦克',
            '格林斯伯勒',
            '计划',
            '亨德森',
            '林肯',
            '水牛',
            '韦恩堡',
            '泽西岛',
            '丘拉维斯塔',
            '奥兰多',
            '圣彼得堡',
            '诺福克',
            '钱德勒',
            '拉雷多',
            '麦迪逊',
            '达勒姆',
            '拉伯克',
            '温斯顿·塞勒姆',
            '花环',
            '格伦代尔',
            '海厄利亚',
            '里诺',
            '巴吞鲁日',
            '尔湾',
            '切萨皮克',
            '欧文',
            '斯科茨代尔',
            '北拉斯维加斯',
            '弗里蒙特',
            '圣贝纳迪诺',
            '博伊西',
            '伯明翰',
    ]
}

露天天气服务

Promise是许多并发框架所接受的概念,它们类似于java util并发的Future实例,但是包含了更加用户友好的异常处理模型,这些有用的功能(如链接和附加侦听器)

365bet地区在365bet地区中使异步承诺类提供Promise API的入口点

grails应用程序服务组织openweathermap OpenweathermapService groovy
 使异步Promise
 365bet地区异步PromiseList

添加OpenweathermapService以下方法

grails应用程序服务组织openweathermap OpenweathermapService groovy
    动态编译诺言清单findCurrentWeatherByCitiesAndCountryCodeWithPromises清单<城市countryCode单位单位PromiseList清单承诺清单每个城市城市清单任务(1)当前的天气城市国家/地区代码单位返回清单(2)
    }
1 任务返回一个实例的方法使异步Promise.
2 一种承诺清单返回,其中包含所有已创建的并集使异步Promise实例

添加等效的同步方法

grails应用程序服务组织openweathermap OpenweathermapService groovy
    清单findCurrentWeatherByCitiesAndCountryCode清单<城市国家/地区代码单位所在城市收集当前天气国家代码单位

城市管理员

创建一个名为的控制器CitiesController使用以前的服务方法

365bet地区应用程序控制器演示CitiesController groovy
演示 使异步Promise
 静态的 使异步承诺
 常规转换CompileStatic
 org openweathermap当前天气
 org openweathermap OpenweathermapService
 org openweathermap单位

静态编译
 CitiesController {

    上市 静态的 最后 我们'我们'OpenweathermapService openweathermapService定义 指数(单元布尔值异步单位unitEnum单位unitWithString单位如果异步的(1)诺言清单currentWeatherList openweathermapService查找CurrentWeatherByCitiesAndCountryCodeWithPromises最大的美国城市CITIES美国单位枚举返回任务(2)
                    currentWeatherListcurrentWeatherList单元createBoundPromise unitEnum其他 { (3)
            清单currentWeatherList openweathermapService查找当前WeatherByCitiesAndCountryCode最大的美国城市CITIES'我们'unitEnum返回 [currentWeatherListcurrentWeatherList单元unitEnum
1 如果异步的参数是然后使用先前创建的返回诺言的服务方法
2 365bet地区从控制器返回一组命名任务,其中每个键在视图模型中成为解析值。365bet地区将检测以下事实:返回了诺言,创建了一个非阻塞响应。createBoundPromise方法用于定义诺言已经绑定,不需要异步解决
3 如果异步的参数是然后同步创建模型

视图

使用GSP渲染天气预报网格

grails应用查看城市指数gsp


    美国最大的城市天气跨度类别标签
    <> ="布局" 内容="主要" />


<> ID="内容" 角色="主要">
    <> ="行紧身衣">
        <> ="currentWeatherList" ="当前天气">
            <> 测试="当前天气">
                <> 模板="天气"
                          模型="当前天气当前天气单位" />
            
        
    

运行应用程序

要运行该应用程序,请使用gradlew bootRun命令将在端口上启动应用程序

请记住在中设置有效的开放天气地图API密钥

365bet地区要利用365bet地区的异步功能获取美国最大城市的天气预报,请访问

如果您访问http本地主机城市异步true

运行同步

访问http本地主机城市异步false同步获取天气预报

运行同步

帮助365bet地区

365bet地区服务:

免费咨询

OCI 365bet地区团队包括365bet地区联合创始人检查我们的并向发展和维护365bet地区的工程师学习

Grails OCI团队