获取调用函数的函数的返回值

时间:2018-05-25 16:20:24

标签: javascript

我从另一个提取本地IP地址的答案中获得以下功能。我输出本地IP两次,一次在函数中,我也尝试输出调用函数的值:

function getLocalIP () {
  window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection
  var pc = new RTCPeerConnection({iceServers: []})
  var noop = function () {}
  var localIP

  pc.createDataChannel('')
  pc.createOffer(pc.setLocalDescription.bind(pc), noop)
  pc.onicecandidate = function (ice) {
    if (!ice || !ice.candidate || !ice.candidate.candidate) return
    localIP = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1]
    console.log(localIP)
  }
  return localIP
}

console.log(getLocalIP())

输出:

undefined
192.168.0.1

我大多数人都明白为什么会这样。 JavaScript是异步的,因此getLocalIP在未定义时返回值。

我如何使用它来获得我期望从同步背景中获得的行为?我来自Python背景,我希望上面的代码返回已定义的变量。

0 个答案:

没有答案