微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

相同的Scala Task代码在沙盒中可用,但在intelliJ中不起作用

如何解决相同的Scala Task代码在沙盒中可用,但在intelliJ中不起作用

只需尝试一些简单的Task示例。以下代码可以正常工作

<!DOCTYPE html>
<html>
<head>
<style>

@keyframes sliding0 {
  0% { left: 0; }
  30% { left: 0; }
  100% { left: -33vw; }
}

@keyframes sliding1 {
  0% { left: 0; }
  30% { left: 0; }
  100% { left: -33vw; }
}

body {
  background-repeat: no-repeat no-repeat;
  background-size: cover;
  background-position: center center;
}
div .glide_track {
  position: relative;
  width: 100vw;
  overflow-x: hidden;
}

ul {
  position:relative;
  left: 0;
  width: 330vw;
  height:100vh;
  animation-name: sliding0;
  animation-duration: 3s;
  animation-delay: 0s;
  animation-iteration-count: 1;
  animation-timing-function: linear;
  margin: 0;
  padding: 0;
  list-style-type: none;
}

li {
  position: relative;
  left:0;
  top:0;
  float:left;
  width: 32vw;
  height:30vw;
  display: inline-block;
  margin: 0;
  margin-right: 1vw;
  padding: 0;
  background-size: cover;
  background-repeat: no-repeat no-repeat;
  background-position: center center;
}

</style>
</head>
<body>
<script>

// we put the two lots of text and the image url for each slide in an array in the order they are to be shown
// this makes it easier to maintain when you want to add or remove a slide or change their order
// we only have one slider at the moment but this makes it more general

// these are the offsets in the array describing a slide. Done as indexes rather than named as easier to set up sliders array
const img = 0;
const text1 = 1;
const text2 = 2;

const sliders = [
  [
    ['https://ahweb.org.uk/Boxfordmosaic.jpg','Shire','Valley<br> of Dreams'],['https://ahweb.org.uk/gear-in-turbine-house-reading.jpg','Westwood','Misty Woodlands'],['https://ahweb.org.uk/tricycle-in-abbey-ruins.jpg',['https://ahweb.org.uk/Boxfordmosaic.jpg','Valley<br> of Dreams']
  ]
];

// go through each slider and create its outer divs and its ul element
sliders.forEach(createSlider);

function createSlider(slider,sliderno) {
  const div1 = document.createElement('DIV');
  const div2 = document.createElement('DIV');
  const ul = document.createElement('UL');

  div1.classList.add("glide","hero-carousel");
  div2.classList.add("glide_track");
  div2.setAttribute("data-glide-el","track");

  div1.appendChild(div2);
  div2.appendChild(ul);
  document.body.appendChild(div1);

  ul.classList.add("glide__slides");
    
  ul.addEventListener("animationend",animationEnd);
 
  slider.forEach(createLi);

  function createLi(slide,slideNo) {
    const li = document.createElement('LI');
    li.classList.add("glide__slide","carousel-item");
    li.style.backgroundImage='url('+slide[img]+')';
    li.addEventListener("click",slideClicked);
    li.addEventListener("mouSEOver",slideHovered);
    li.addEventListener("mouSEOut",slideUnhovered);
    
    li.setAttribute('data-slideno','0' + slideNo);//! needs generalising if you have >10 slides !

    ul.appendChild(li);

    const div = document.createElement('DIV');
    const p = document.createElement('P');
    const h3 = document.createElement('H3');

    p.innerHTML = slide[text1];
    div.appendChild(p);
    h3.innerHTML = slide[text2];
    div.appendChild(h3);

    li.appendChild(div);
  }
}

// this is for testing,in real version use whatever required (i.e. whichever element is to have the hero image)
function ahHeroChange(backgroundImage) {  
  document.body.style.background = backgroundImage + " bottom/cover no-repeat";
}

function slideClicked(event) {
  var slide = event.target;
  var slideNo = slide.getAttribute('data-slideno');
  
  // make the hero image the same as the slide's
  ahHeroChange(slide.style.backgroundImage);
  
/* I don't kNow what these functions do - they were executed in the original on a click 

  number(slideno);
  h4(slide.firstElementChild.querySelector('p').innerHTML);// text1 of the slide is passed to h4
  h1(slide.firstElementChild.querySelector('h3').innerHTML;// text2 of the slide is passed to h1

*/
}

function slideHovered(event) {
  var slide = event.target;
  var slider = slide.parentElement;
  slider.style.animationPlayState = 'paused';
  ahHeroChange(slide.style.backgroundImage);
}

function slideUnhovered(event) {
  var slide = event.target;
  var slider = slide.parentElement;
  
  //restore the hero image to the first one in the slider
  ahHeroChange(slider.firstElementChild.style.backgroundImage);
  
  //get the animation running again
  slider.style.animationPlayState = 'running'; 
}

function animationEnd(event) {
   //find the element that was clicked (it will be a ul element representing a slider)
   var slider = event.target;
   
  //take the first slide off the list and put it back at the end
  slider.append(this.firstElementChild);
  
  //change the hero image to the slide which is Now the leftmost - use modified heroChange in the final version
  document.body.style.backgroundImage = this.firstElementChild.style.backgroundImage;
  
  // toggle the animationName (to an identical keyframes action) to force the animation to start again
  slider.style.animationName='sliding'+(Number(event.animationName.replace('sliding',''))+1)%2;
}

</script>
</body>
</html>

但是使用runToFuture仅在沙箱中有效,而当我在intelliJ中运行它时不起作用(当然,在intelliJ中,我在对象内部运行它)

import monix.eval.Task
import monix.execution.CancelableFuture
import monix.execution.Scheduler.Implicits.global

import scala.util.Success

val task = Task { 1 + 1 }
val cancellable = task.runAsync {
  case Right(result) => println(s"result is $result")
  case Left(err) => System.out.println(s"ERROR: ${err.getMessage}")
}

无需打印2,只需

“ C:\ Program Files \ Java \ jdk1.8.0_192 \ bin \ java.exe”

退出代码0结束的过程

可能是什么原因,我没想到这么早就卡住了。预先感谢

解决方法

作为独立程序运行时,该程序在任务完成之前退出,因此您不会获得任何输出。您需要等待任务完成。

Await.result(future,Duration.Inf)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。