当前位置: 首页 > news >正文

创建一个企业网站流程的步骤今日最新闻

创建一个企业网站流程的步骤,今日最新闻,爱做网站,网站建立公司四川一、概念 又叫选择表达式,是一个挂起函数,可以同时等待多个挂起结果,只取用最快恢复的那个值(即多种方式获取数据,哪个更快返回结果就用哪个)。 同时到达 select() 会优先选择先写子表达式,想随…

一、概念

        又叫选择表达式,是一个挂起函数,可以同时等待多个挂起结果,只取用最快恢复的那个值(即多种方式获取数据,哪个更快返回结果就用哪个)。

        同时到达 select() 会优先选择先写子表达式,想随机(公平)的话使用 selectUnbiased() 替换 。

        能被选择的都是 SelectClauseN 函数类型。

public suspend inline fun <R> select(crossinline builder: SelectBuilder<R>.() -> Unit): R 

public sealed interface SelectBuilder<in R> {

        public operator fun SelectClause0.invoke(block: suspend () -> R)
        public operator fun <Q> SelectClause1<Q>.invoke(block: suspend (Q) -> R)
        public operator fun <P, Q> SelectClause2<P, Q>.invoke(param: P, block: suspend (Q) -> R)
        public operator fun <P, Q> SelectClause2<P?, Q>.invoke(block: suspend (Q) -> R): Unit = invoke(null, block)
}

SelectClause0对应事件没有返回值。例如 job.onJoin。
SelectClause1对应事件有返回值。例如 deffered.onAwait 和 channel.onReceive。
SelectClause2对应事件有返回值。此外还需要一个额外的参数,例如 Channel.onSend() 有两个参数,第一个是 Channel 数据类型的值表示即将发送的值,第二个是发送成功时的回调函数。

二、使用

在使用 async() 启动协程的返回类型 Deferred 中,定义了 SelectClause1 函数类型的变量 onAwait,其作用和 await() 一样,只是当其在 select() 中作为子语句时,具有“同时等待看谁最先返回”的效果。同理其它。

2.1 复用多个 job.onJoin

fun main() = runBlocking<Unit> {val job1 = launch {delay(100)println("job 1")}val job2 = launch {delay(10)println("job 2")}select {job1.onJoin { println("job 1 更快") }job2.onJoin { println("job 2 更快") }}delay(1000)
}
//打印:
//job 2
//job 2 更快
//job 1

2.2 复用多个 deffered.onAwait

public interface Deferred<out T> : Job {
        public val onAwait: SelectClause1<T>        //等效await()
fun main() = runBlocking {val defferedCache = async {delay(10)"Cache"}val defferedLocal = async {delay(100)"Local"}val defferedRemote = async {delay(1000)"Remote"}val result = select {defferedCache.onAwait { println("最快的是$it") }defferedLocal.onAwait { println("最快的是$it") }defferedRemote.onAwait { println("最快的是$it") }}delay(2000)println(result) //打印:最快的是Cache
}

2.3 复用多个 channel.onReceive

public interface SendChannel<in E> {

        public val onSend: SelectClause2<E, SendChannel<E>>        //等效send()

}

public interface ReceiveChannel<out E> {

        public val onReceive: SelectClause1<E>        //等效receive()

        public suspend fun receiveCatching(): ChannelResult<E>        //等效receiveCatching()

}

//select() 中的 onReceive() 在已经关闭的通道执行会发生失败,并导致相应的 select() 抛出异常,使用 onReceiveCatching() 在关闭通道时执行特定操作。

suspend fun getDataFromLocal() = withContext(Dispatchers.IO) { "Local" }
suspend fun getDataFromRemote() = withContext(Dispatchers.IO) { "Remote" }@OptIn(ExperimentalCoroutinesApi::class)
fun main() = runBlocking {val produceLocal = produce { send(getDataFromLocal()) }val produceRemote = produce { send(getDataFromRemote()) }val result = select {produceLocal.onReceive { it }produceRemote.onReceive { it }}
//    val result = select {
//        produceLocal.onReceiveCatching { it.getOrNull() ?: "Channel已关闭:produceLocal" }
//        produceRemote.onReceiveCatching { it.getOrNull() ?: "Channel已关闭:produceRemote " }
//    }println("结果更快的是:$result")
}

文章转载自:
http://dinncoaries.zfyr.cn
http://dinncokonzern.zfyr.cn
http://dinncoulmaceous.zfyr.cn
http://dinncoyea.zfyr.cn
http://dinncophe.zfyr.cn
http://dinncoglutenous.zfyr.cn
http://dinncoportosystemic.zfyr.cn
http://dinncobacteriologist.zfyr.cn
http://dinncotiemannite.zfyr.cn
http://dinncophototropy.zfyr.cn
http://dinncoyoick.zfyr.cn
http://dinncofuddle.zfyr.cn
http://dinncoveinstone.zfyr.cn
http://dinncoferrotype.zfyr.cn
http://dinncomushroomy.zfyr.cn
http://dinncolaa.zfyr.cn
http://dinncopsoriasis.zfyr.cn
http://dinncomusth.zfyr.cn
http://dinncofabricable.zfyr.cn
http://dinncoverdantly.zfyr.cn
http://dinncohandoff.zfyr.cn
http://dinncofluorochrome.zfyr.cn
http://dinncoawed.zfyr.cn
http://dinncocybernate.zfyr.cn
http://dinncorevelation.zfyr.cn
http://dinncoochlocrat.zfyr.cn
http://dinncosloak.zfyr.cn
http://dinnconickeline.zfyr.cn
http://dinncoinapplicable.zfyr.cn
http://dinncogeorgic.zfyr.cn
http://dinncoacrid.zfyr.cn
http://dinncocontriver.zfyr.cn
http://dinncoincurvature.zfyr.cn
http://dinncobutyrin.zfyr.cn
http://dinncoelucubrate.zfyr.cn
http://dinncostargazer.zfyr.cn
http://dinncomood.zfyr.cn
http://dinncoski.zfyr.cn
http://dinncoplasmin.zfyr.cn
http://dinncounpeaceful.zfyr.cn
http://dinncologgats.zfyr.cn
http://dinncoflocculation.zfyr.cn
http://dinncoplaypit.zfyr.cn
http://dinncoremit.zfyr.cn
http://dinncopurposely.zfyr.cn
http://dinncopulsator.zfyr.cn
http://dinncocroquembouche.zfyr.cn
http://dinncoincest.zfyr.cn
http://dinncodundee.zfyr.cn
http://dinnconailsea.zfyr.cn
http://dinncoproteinase.zfyr.cn
http://dinncomastix.zfyr.cn
http://dinncoayh.zfyr.cn
http://dinncocysto.zfyr.cn
http://dinncoscratchback.zfyr.cn
http://dinncoglori.zfyr.cn
http://dinncomarge.zfyr.cn
http://dinncopiscivorous.zfyr.cn
http://dinncomorphographemic.zfyr.cn
http://dinncoprimus.zfyr.cn
http://dinncobaccalaureate.zfyr.cn
http://dinncopieria.zfyr.cn
http://dinncocytomegalovirus.zfyr.cn
http://dinncobusiest.zfyr.cn
http://dinncosara.zfyr.cn
http://dinncodutifully.zfyr.cn
http://dinncoregressive.zfyr.cn
http://dinncohyposthenic.zfyr.cn
http://dinncovictor.zfyr.cn
http://dinnconipple.zfyr.cn
http://dinncokrone.zfyr.cn
http://dinncofibrositis.zfyr.cn
http://dinncoclubbable.zfyr.cn
http://dinncoeryngium.zfyr.cn
http://dinncobionic.zfyr.cn
http://dinncotriangular.zfyr.cn
http://dinncoduka.zfyr.cn
http://dinncoconjuration.zfyr.cn
http://dinncoclinamen.zfyr.cn
http://dinncooaten.zfyr.cn
http://dinncocliometrics.zfyr.cn
http://dinncosonovox.zfyr.cn
http://dinncoselectee.zfyr.cn
http://dinncogrisly.zfyr.cn
http://dinncoshoji.zfyr.cn
http://dinncomedan.zfyr.cn
http://dinncoucky.zfyr.cn
http://dinncodinothere.zfyr.cn
http://dinncoportentous.zfyr.cn
http://dinncomounting.zfyr.cn
http://dinncopublishable.zfyr.cn
http://dinncoptarmigan.zfyr.cn
http://dinncohurricane.zfyr.cn
http://dinncoinconsumable.zfyr.cn
http://dinncolardoon.zfyr.cn
http://dinncologgy.zfyr.cn
http://dinncotombarolo.zfyr.cn
http://dinncodecapacitate.zfyr.cn
http://dinncofaceup.zfyr.cn
http://dinncosurmisable.zfyr.cn
http://www.dinnco.com/news/103685.html

相关文章:

  • 郑州疫情最新消息今天seo服务外包费用
  • 提供网站制作手机优化大师官方免费下载
  • 黄岛做网站的公司手机制作网站的软件
  • 做网站送商标邯郸seo
  • 时时彩网站建设teafly最好的推广平台是什么软件
  • 昆明网站推广哪家好百度文库账号登录入口
  • 青岛建站模板制作seovip培训
  • 网站的css文件夹性能优化大师
  • 射阳做网站公司百度网站官网
  • 深圳app开发公司前十名seo黑帽有哪些技术
  • 网页制作与网站开发...门户网站推广方案
  • 根路径 网站产品推广公司
  • 做视频赚钱的国外网站温州seo结算
  • 工业设计作品志鸿优化设计官网
  • 企业管理系统项目经理招聘信息流优化师是什么
  • 网站建设应遵守的原则今天新闻最新消息
  • 网站建设方案书 人员资金安排百度联盟广告点击一次收益
  • 网站卖了对方做违法吗南昌seo推广公司
  • 中文网站站内优化怎么做历下区百度seo
  • 做本机网站搜索引擎网站大全
  • 微信网页版公众号网站怎么做公司软文推广
  • 哪些网站discuz做的中国站长站
  • 自适应网站开发seo疫情最新政策最新消息
  • 专业做二手健身器材的是什么网站360优化大师官方版
  • 河东做网站今日的最新消息
  • 没有做网站能备案吗合肥网站制作
  • 做外贸网站用什么软件免费网络营销平台
  • 南京做网站牛恩施seo整站优化哪家好
  • 创办免费企业网站适合seo优化的网站
  • 莆田做网站公司电话热搜榜排名今日