完成地图功能后如何执行?

时间:2019-07-25 14:27:53

标签: javascript

我想在完成地图功能后执行一些操作。

  1. 我认为我们可以如下使用回调函数。但是它不存在,所以不起作用:

    this.data.map((v, i) => {
        console.log("in map func");
    }, () => {
       console.log("callback of map");             
    });
    
  2. 所以我这样改变了

    var last = this.data.length;
    
    this.data.map((v, i) => {
        console.log("in map func");
        if(i + 1 === last) {
            console.log("last!!");
        }
    });
    

它奏效了,但是如果有人知道更好的方法,请告诉我。

添加

this.data.map((v, i) => {
    setTimeout(function(){ console.log("in map"); }, 3000);
});

console.log("after map");

↑“后映射”首先显示在此代码上。   (我的目的是在地图功能中使用Ajax)

1 个答案:

答案 0 :(得分:0)

如果您只想在map之后立即运行命令,只需将其放在代码的下一行:

this.data.map((v, i) => {
   // Do whatever you want to do
});
console.log("This will run after your map is done"); 

要更轻松地理解这一点,由于map将返回一个新对象,您可以执行以下操作:

var myArray = [1, 4, 9, 16];
const map1 = array1.map(x => x * 2);
console.log(map1); // This will have the final result of map

更新:

所以您的问题还不是很清楚,现在我想知道您想做什么,我想您可以使用Promise

var promise1 = new Promise(function(resolve, reject) {
      this.data.map((v, i) => {
        setTimeout(function(){ resolve('in map'); }, 3000);
       });
});

 promise1.then(function(value) {
     console.log(value);
     // expected output: "in map"
 });