美文网首页
go语言类似Promise操作

go语言类似Promise操作

作者: 鸿雁长飞光不度 | 来源:发表于2024-01-07 15:06 被阅读0次
package main

import (
    "fmt"
    "time"
)

type Promise struct {
    result chan interface{}
    error  error
}

func NewPromise(task func() interface{}) *Promise {
    p := &Promise{result: make(chan interface{}, 1)}
    go func() {
        result := task()
        p.result <- result
    }()
    return p
}

func (p *Promise) Then(callback func(interface{}) interface{}) *Promise {
    return NewPromise(func() interface{} {
        result := <-p.result
        if p.error != nil {
            return p.error
        }
        return callback(result)
    })
}

func (p *Promise) Catch(callback func(error) interface{}) *Promise {
    return NewPromise(func() interface{} {
        if p.error != nil {
            return callback(p.error)
        }
        result := <-p.result
        return result
    })
}

func main() {
    promise := NewPromise(func() interface{} {
        return "Hello, World!"
    })

    promise.Then(func(result interface{}) interface{} {
        message := result.(string)
        fmt.Println(message)
        return nil
    }).Then(func(result interface{}) interface{} {
        fmt.Println("Hello, Promise!")
        return nil
    }).Then(func(result interface{}) interface{} {
        fmt.Println("Hello, Promise2!")
        return nil
    })

    // 等待异步操作完成
    time.Sleep(10 * time.Second)
}

相关文章

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • Go语言并发

    Go语言并发 Go语言级别支持协程,叫做goroutine Go 语言从语言层面支持并发和并行的开发操作 Go并发...

  • Go语言之包和文件

    在Go语言中,包的作用和其他语言的库或者模块类似,Go语言的包我感觉类似于IDEA里面的module,就是可以互相...

  • Go语言——defer

    Go语言——defer defer操作类似stack,FILO先进后出。 与return一直使用的时候,需要注意顺...

  • GO语言初级学习之代码案例13 (QQ群聊)

    @(go语言 黑马)[GO语言] 并发聊天室 题目:利用Go语言高并发的特性,编写一个类似QQ群聊功能的并发聊天服...

  • Golang的入门教程(一)

    Go语言特性 Go语言是Google公司开发的一种静态的,编译型并自带垃圾回收和并发的变成语言.Go语言的风格类似...

  • 49.超赞的 Go 语言 INI 文件操作

    超赞的 Go 语言 INI 文件操作

  • Go操作MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语...

  • Go语言操作Redis

    Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。...

  • Go语言——原子操作

    Go语言——原子操作 参考: 《Go并发编程实战(第2版)》 Background 原子操作即执行过程不能被中断的...

网友评论

      本文标题:go语言类似Promise操作

      本文链接:https://www.haomeiwen.com/subject/rjigndtx.html