繁体   English   中英

Javascript-然后功能无法执行

[英]Javascript - then function not executing

这是我的问题

const { Client } = require('destiny2');
const client = new Client('apiKey');

window.memberName = function(){

    var pName = document.getElementById('memberName');
    var pId = document.getElementById('memberId');
    var name = document.getElementById('search').value;

    client.getProfile(name, '4')
      .then(data => console.log(data));

    client.getProfile(name, '4').then(
        function(value) { 
            data => pId.appendChild(document.createTextNode("Platform:" + 
              data.profile.platform[1]));
            data => pName.appendChild(document.createTextNode("Name:" + 
             data.profile.displayName));
        }
    );
}

client.getProfile(name, '4').then...此函数中的任何内容client.getProfile(name, '4').then...执行。

您的第二个client.getProfile调用错误。

Promise.prototype.then需要一个onFulfilled函数。

p.then(onFulfilled[, onRejected]);

代替:

client.getProfile(name, '4').then(
    function(value) { 
        data => pId.appendChild(document.createTextNode("Platform:" + data.profile.platform[1]));
     // ^^^^
     // Remove anonymous function  
        data => pName.appendChild(document.createTextNode("Name:" + data.profile.displayName));
     // ^^^^
     // Remove anonymous function  
    }
);

做这个:

client.getProfile(name, '4').then(data => {
  pId.appendChild(document.createTextNode(`Platform: ${data.profile.platform[1]}`));
  pName.appendChild(document.createTextNode(`Name: ${data.profile.displayName}`));
});

在lambda内部,您仅定义了2个匿名函数,而没有实际执行:

   client.getProfile(name, '4').then(
    function(value) { 
        data => pId.appendChild(document.createTextNode("Platform:" + 
          data.profile.platform[1]));
        data => pName.appendChild(document.createTextNode("Name:" + 
         data.profile.displayName));
    }
   );

用实际电话代替

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM