web/scalajs
javascript callback 을 scala Future 로 facade 작성
wefree
2023. 12. 11. 15:03
문제
chrome.cookies.get 은 cookie 값이 callback 으로 처리되는데, scala Future 로 리턴하는 scalajs facade 로 만들어 보자.
코드
import scala.concurrent.{Future, Promise}
import scala.scalajs.js
object Cookie {
def getValue(name: String, url: String): Future[String] = {
val p: Promise[String] = Promise[String]()
val f: js.Function1[js.Dynamic, Unit] = (info: js.Dynamic) => {
val pageId = info.value.asInstanceOf[String]
p.success(pageId)
}
js.Dynamic.global.chrome.cookies.get(
js.Dictionary("name" -> name, "url" -> url),
f
)
p.future
}
}