是否使用ScalaJS DOM并使用以下内容?
org.scalajs.dom.setTimeout( () => {
// Work
}, 1000)
Run Code Online (Sandbox Code Playgroud)
在ScalaJS的上下文中是否有其他方式或更好的方法?
如何在Scala中构造onComplete以这种方式操作:
图.1
{
var x;
if(result.isFailure){
x = foo() // foo is a future
}
if(result.isSuccess){
x = 5
}
bar(x)
}
Run Code Online (Sandbox Code Playgroud)
我以为我可以这样做:
图2
var x = foo onComplete {
case Success(x) => 5
case Failure(t) => foo() //foo is a future
}
bar(x)
Run Code Online (Sandbox Code Playgroud)
但是onComplete,onFailure和onSuccess都有Unit
返回类型,
onComplete[U](f: (Try[T]) ? U)(implicit executor: ExecutionContext): Unit
onSuccess[U](pf: PartialFunction[T, U])(implicit executor: ExecutionContext): Unit
onFailure[U](pf: PartialFunction[Throwable, U])(implicit executor: ExecutionContext): Unit
Run Code Online (Sandbox Code Playgroud)
如何在不使用var的情况下实现二维形式?
我能够在终端使用scalac编译scala程序,但是我得到了警告.
Charless-Macintosh:src Charles$ scalac hello.scala
Charless-Macintosh:src Charles$ scala HelloWorld
No such file or class on classpath: HelloWorld
Run Code Online (Sandbox Code Playgroud)
这与.profile
scala有关吗?我对发生的事情感到很困惑.非常感谢
几个月前,当我第一次发现webJars时,我非常怀疑,鉴于某些构建/构建系统的巨大复杂性以及js
文件发布的频率,它将成为处理客户端依赖关系的可行方式.第二个问题当然不是很有根据,但是我在第一个问题上得到了证明,在花了差不多36个小时之后,现在徒劳地试图让10个scss/css/less
类型的webJars和8个JS webJars生活在一个jsDependencies
屋檐下.
我发现当你达到JS依赖3,4或5时,你开始进入一个荒谬的timekill循环:
[trace] Stack trace suppressed: run last client/compile:resolvedJSDependencies for the full output.
[error] (client/compile:resolvedJSDependencies) org.scalajs.core.tools.jsdep.JSLibResolveException: Some references to JS libraries could not be resolved:
[error] - Ambiguous reference to a JS library: bootstrap.min.js
[error] Possible paths found on the classpath:
[error] - META-INF/resources/webjars/bootstrap/3.3.6/js/bootstrap.min.js
[error] - META-INF/resources/webjars/bootstrap3-dialog/1.34.4/examples/assets/bootstrap/js/bootstrap.min.js
[error] originating from: client:compile, client:compile, client:compile, client:compile
[error] - Ambiguous reference to a JS library: bootstrap.js
[error] Possible paths found on the classpath:
[error] - …
Run Code Online (Sandbox Code Playgroud) (让我们假设有一个很好的理由希望如此.如果你想阅读正当理由,请参阅问题的结尾.)
我想获得与for in
循环相同的结果,但不使用该语言结构.结果我的意思是只有一个属性名称数组(我不需要重现在迭代时修改对象时会发生的行为).
要将问题放入代码中,我想在没有以下情况下实现此功能for in
:
function getPropertiesOf(obj) {
var props = [];
for (var prop in obj)
props.push(prop);
return props;
}
Run Code Online (Sandbox Code Playgroud)
从我的ECMAScript的5.1规格大约的理解在声明中对和的Object.keys
方法,似乎下面的实现应该是正确的:
function getPropertiesOf(obj) {
var props = [];
var alreadySeen = {};
// Handle primitive types
if (obj === null || obj === undefined)
return props;
obj = Object(obj);
// For each object in the prototype chain:
while (obj !== null) {
// Add own enumerable properties …
Run Code Online (Sandbox Code Playgroud) 我使用该指南创建了一个简单的Spring Boot REST服务,并在POST时遇到以下错误http://localhost:8080/greeting
- "status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"不支持请求方法'POST'",
我没有找到任何有关如何解决错误的信息.我正在使用版本1.3.2.RELEASE并使用启动Tomcat mvn spring-boot:run
.
该指南说默认允许所有HTTP方法.那么为什么它会回应不支持POST?
在POST到此URL时,如何让Spring调用控制器方法?
如何使用sbt-scalajs插件排除scalajs依赖项?
我正在尝试导入以下库
"org.webjars.bower" % "react-bootstrap-datetimepicker" % "0.0.14" / "react-bootstrap-datetimepicker.js"
Run Code Online (Sandbox Code Playgroud)
但是这个库正在下载已经存在于我的项目中的其他依赖项("react"和"react-bootstrap"),我正在进行版本冲突.
我尝试过使用exclude函数
"org.webjars.bower" % "react-bootstrap-datetimepicker" % "0.0.14" exclude ("org.webjars.bower", "react")
Run Code Online (Sandbox Code Playgroud)
但这不允许我在命令中附加/"react-bootstrap-datetimepicker.js".
我得到的例外是:
org.scalajs.core.tools.classpath.JSLibResolveException: Some references to JS libraries could not be resolved:
- Ambiguous reference to a JS library: react-bootstrap.js
Possible paths found on the classpath:
- META-INF/resources/webjars/react-bootstrap/0.16.1/react-bootstrap.js
- META-INF/resources/webjars/react-bootstrap/0.23.7/react-bootstrap.js
originating from: adminJS:compile
at org.scalajs.core.tools.classpath.PartialClasspath.resolveAllResourceNames(PartialClasspath.scala:137)
at org.scalajs.core.tools.classpath.PartialClasspath.resolveDependencies(PartialClasspath.scala:80)
at org.scalajs.core.tools.classpath.PartialClasspath.resolve(PartialClasspath.scala:64)
at org.scalajs.sbtplugin.ScalaJSPluginInternal$$anonfun$11.apply(ScalaJSPluginInternal.scala:140)
at org.scalajs.sbtplugin.ScalaJSPluginInternal$$anonfun$11.apply(ScalaJSPluginInternal.scala:137)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
at sbt.std.Transform$$anon$4.work(System.scala:63)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.Execute.work(Execute.scala:235)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226) …
Run Code Online (Sandbox Code Playgroud) 我使用scala.js(0.6.5)和scala-js-dom(0.8.2)并且我有一些带有ajax.post的奇怪的pb,当我收到错误状态(这里是409).
浏览器控制台显示错误消息,但是从我的scala代码中,我无法访问状态代码和返回的消息.
这是我用来发送POST的代码:
val request = Ajax.post(
url,
data = postData,
headers = bsHeaders)
request.map(xhr => {
log.debug("response text: " + xhr.responseText)
if (xhr.status == 201) {
try {
val loc = xhr.getResponseHeader("Location")
if(loc == locHeaderResp) {
loc
} else {
log.error(s"Location header invalid: ${loc}")
}
} catch {
case e:Exception => {
log.error("Couldn't read 'Location' header " + e.getMessage)
log.debug("List of headers: " + xhr.getAllResponseHeaders())
""
}
}
} else if (xhr.status == 409) {
log.error("" + xhr.responseText)
log.error(s"${xhr.responseText}") …
Run Code Online (Sandbox Code Playgroud) 虽然我喜欢Scala这个语言,而Scala.js就是这个项目,但即使在fullOptJS模式下,我对最终JS包的大小也有点偏差.
我迫切需要创建一个在浏览器中使用的小型库.> 150kb是一个很大的问题,可以说像BuckleScript/ReasonML这样的工具可以保证快速执行和微小的捆绑.
在可预见的未来,Scala.js会开始生产更小的捆绑吗?
我开始使用 scala.js,我想将 Seq 转换为 js.Array。我有这个示例代码:
import scala.scalajs.js
import scala.scalajs.js.annotation._
@JSExportTopLevel("Seqs")
object JsSeqs {
@JSExport
def sum(xs: js.Array[Double], ys: js.Array[Double]): js.Array[Double] = {
val s = Seqs.sum(xs.toSeq, ys.toSeq)
//how to parse Seq[Double] to js.Array[Double] ???
}
}
object Seqs {
def sum(xs: Seq[Double], ys: Seq[Double]): Seq[Double] = {
xs.zip(ys).map(x => x._1 + x._2)
}
}
Run Code Online (Sandbox Code Playgroud)
怎么做?
scala.js ×6
scala ×3
sbt ×2
compilation ×1
ecmascript-5 ×1
java ×1
javascript ×1
node.js ×1
sbt-web ×1
spring-boot ×1