Javascript:函数不是异步不是以正确的顺序调用

时间:2017-03-03 17:29:49

标签: javascript asynchronous

我有这个:https://jsfiddle.net/ahhc9tjn/

问题在于这两个功能:

addShip()

为什么我必须等待这项工作?我的意思是函数不是异步的,所以应该

stopAllShipCSS()

仅在

之后致电
(1)
$.when(this.stopAllShipCSS()).then(this.addShip());

(2)
var it = 0;
var save = this;
this.ships.forEach(function(ship) {
  ship.css({
    'animation':''
  });
  it++;
  if (it == save.ships.length) {
    save.addShip();
   }
});

问题是,在addShipTest1中,停止是"在"之后调用或"忽略" ...(JSFiddle显示问题)。

编辑:

我试过的解决方案,但这并没有成功:

const input = {
  a: ['b', 'c'],
  b: ['d', 'e', 'f'],
  c: ['g'],
  d: ['h'],
}
const recur = (d) => {
  const ch = input[d]
  if (!ch) {
    return {
      data: []
    };
  }

  let out = [];
  for (let i = 0; i < ch.length; i++) {
    const c = ch[i]
    const x = recur(c)
    if (x.skip) { // if any of the child met filter
      return x
    }

    if (c === 'd') { // current id met filter
      return {
        data: [c].concat(x.data),
        skip: true
      }
    }

    out = out.concat([c], x.data)
  }
  return {
    data: out
  }
}


console.log("end: ", recur('a').data)

0 个答案:

没有答案