此扩展程序调用Goo.gl URL缩短器,然后尝试将其回复加到一个字符串中(用于发送电子邮件)。但是,由于它是异步的,因此代码在添加缩短的URL之前继续运行。如何在继续操作之前将其添加到字符串中?

for(i;i<length;i++){
      getShortURL(tabs[i].url, function(short_url) {
      string += encodeURL(short_url);
      });
    }
//do something with string...

//
function getShortURL(long_url, callback ){
...
}

最佳答案

返回url字符串后,您可以在callback内继续执行操作。

for(i;i<length;i++){
      getShortURL(tabs[i].url, function(short_url) {
      string += encodeURL(short_url);
      //do something with string...
      });
    }

//
function getShortURL(long_url, callback ){
...
}


如果代码需要在所有URL返回后运行,请使用条件检查这是您的最后一个代码。

这可能对您有用:

for(var i=0,x=0;i<length;i++){
      getShortURL(tabs[i].url, function(short_url) {
          string += encodeURL(short_url);
          x++;
          if (x === length) {
              //do something with string...
          }
      });
    }

//
function getShortURL(long_url, callback ){
...
}

10-06 00:11