私が今日学んだもの- 5 -非同期としてGolangチャンネルを使うこと
5836 ワード
JavaScriptを使用するのに慣れている人々のために、彼らは確かにAsync/Waitを使用したか、聞いたことがあります、それは非同期プログラミングで働くことができる言語の特徴です.
ゴランは、これは非常にスムーズに使用されることができますが、しかし、ちょうど言語に来ている人々は、それを行う方法を知らないかもしれないが、ベースを持っている、私は理解するのに役立つ例を準備しています.
我々は、パブリックPokapi APIを使用します.
JavaScriptの使い方
どのようにゴングでそれを行う
戻り値型をチャネルに設定します. 値を返すチャネルを作成します. 非同期実行のためにgo funcを追加します. 機能の範囲内では、値をチャンネルに割り当てます. 関数の最後に、値を持つチャネルの戻り値を示します. 主な機能でで、チャンネルのリターンを変数に割り当てます. あなたが人々が加える何かを持っているならば、私はここを通して読まれた誰にでも感謝しますコメントを残してください.
ゴランは、これは非常にスムーズに使用されることができますが、しかし、ちょうど言語に来ている人々は、それを行う方法を知らないかもしれないが、ベースを持っている、私は理解するのに役立つ例を準備しています.
我々は、パブリックPokapi APIを使用します.
JavaScriptの使い方
const awaitTask = async () => {
let response = await fetch('https://pokeapi.co/api/v2/pokemon/ditto');
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response
}
awaitTask()
.then(r => r.json())
.then(r => console.log(r))
どのようにゴングでそれを行う
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func awaitTask() <-chan string {
fmt.Println("Starting Task...")
c := make(chan string)
go func() {
resp, err := http.Get("https://pokeapi.co/api/v2/pokemon/ditto")
if err != nil {
log.Fatalln(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
c <- string(body)
fmt.Println("...Done!")
}()
return c
}
func main() {
value := <-awaitTask()
fmt.Println(value)
}
作り方Reference
この問題について(私が今日学んだもの- 5 -非同期としてGolangチャンネルを使うこと), 我々は、より多くの情報をここで見つけました https://dev.to/lgdev07/what-i-ve-learned-today-5-using-golang-channels-as-async-await-a0iテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol