में चैनलों के साथ वादा को कार्यान्वित करना मैं जासूस में वादा को लागू करने की कोशिश कर रहा हूं जो जावास्क्रिप्ट में समान होगा।गो
- एक goroutine है, जो सही दूर मुख्य goroutine को
Promise
लौट चलाएँ:type Promise struct { Result chan string Error chan error } func NewPromise() (*Promise) { r := make(chan string, 1) e := make(chan error, 1) return &Promise{ Result: r, Error: e, } } func main() { var p = NewPromise() go func(p *Promise) { time.Sleep(time.Duration(5)*time.Second) p.Result <- "done" }(p) if <- p.Result { fmt.Println(<-p.Result) } // Is it possible to do something else here while wait for 5s? // Once Promise is fulfilled after 5s, the Result is available. }
मैं निम्नलिखित कैसे करते हैं। जबकि, कुछ भी के लिए प्रतीक्षा या तो
Promise.Result
याPromise.Error
एक बार कुछ भेज दिया जाता है के लिए भेजा जाना goroutine से लौट सकते हैं और है कि उपलब्ध चैनल पढ़ने के लिए बनाने के
एसिंक्रोनस रूप से मुख्य दिनचर्या पर कुछ करना।