从函数返回值不起作用

时间:2017-06-27 06:47:43

标签: javascript function return

请不要将此问题标记为重复。我知道有一个类似的问题,只是无法理解如何完成它所以我需要一个非详细的解释 - 解决方案。我有一个旨在返回本地IP地址的功能。功能如下:

const clientsIpAdress = (onNewIP) => {
  const MyPeerConnection =
    window.RTCPeerConnection ||
    window.mozRTCPeerConnection ||
    window.webkitRTCPeerConnection;
  const pc = new MyPeerConnection({
    iceServers: []
  });
  const noop = () => {};
  const localIPs = {};
  const ipRegex =
    /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g;

  const iterateIP = (ip) => {
    if (!localIPs[ip]) onNewIP(ip);
    localIPs[ip] = true;
  };
  pc.createDataChannel('');
  pc.createOffer().then((sdp) => {
    sdp.sdp.split('\n').forEach((line) => {
      if (line.indexOf('candidate') < 0) return;
      line.match(ipRegex).forEach(iterateIP);
    });

    pc.setLocalDescription(sdp, noop, noop);
  });
  pc.onicecandidate = (ice) => {
    if (!ice || !ice.candidate ||
      !ice.candidate.candidate ||
      !ice.candidate.candidate.match(ipRegex)) return;
    ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
  };
};
export default clientsIpAdress;

我有一个包含ip_adress作为参数的对象: 我的目标是这样的: obj:{name:&#34; Alex&#34;,lastname:&#34; Markus&#34;,ip_adress:本地IP地址} 看起来这个函数是异步的,所以我不能简单地返回一个值,所以我写了obj:{name:&#34; Alex&#34;,lastName:&#34; Markus&#34;,clientsIpAddress(ip) =&gt; ip_adress:ip)}但它不起作用。请帮我。非常感谢

2 个答案:

答案 0 :(得分:1)

你要做的事情在语法上是不可能的。你必须做某事。像这样:

let obj = {name:"Alex", lastName: "Markus"};
clientsIpAdress(newIP => { obj.ip_address = newIP });

使用obj对象的代码仍然必须知道ip_address属性可能尚未设置,但是,当它尝试使用它时。您必须考虑该属性是在稍后的时间点设置的。

答案 1 :(得分:0)

export function* login(username, password, locale) {
  const requestParams = {
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/x-www-form-urlencoded',
      'Accept-Language': locale,
      device_type: device,
      os: operatingSystem,
      display: screen
    },
    method: 'post',
    body: `username=${username}&password=${password}`
  };
clientsIpAdress((newIP) => { requestParams.headers.ip_address = newIP; });

现在还在工作。我应该为标题分配ip_address属性吗?