请不要将此问题标记为重复。我知道有一个类似的问题,只是无法理解如何完成它所以我需要一个非详细的解释 - 解决方案。我有一个旨在返回本地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)}但它不起作用。请帮我。非常感谢
答案 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属性吗?