我可能遇到了一个小麻烦。 这是一个返回 Promise 的函数。
export default ()=>{
const socket = io(config.crypt_compare_api_url);
let subscription = config.subscription;
socket.emit('SubAdd', { subs: subscription });
return new Promise(resolve => {
socket.on("m",resolve);
});
}
我在这里使用它。它作为 get_crypto 导入
get_crypto().then((parsedData)=>{
let el=this.state.currencies.find(element=> element.name===parsedData.name);
if(el)
{
el.price=parsedData.price;
}
else this.state.currencies.push(parsedData);
this.setState( {
currencies: this.state.currencies
});
});
** 'then' 函数在套接字收到消息后始终必须重复。但它只能工作一次,**
最佳答案
您不能多次调用和回调。您应该使用 observable 或仅调用“m”事件的回调:
export const getCrypto = (cb) => {
const socket = io(config.crypt_compare_api_url);
let subscription = config.subscription;
socket.emit('SubAdd', { subs: subscription });
socket.on("m", cb);
}
import { getCrypto } from 'get-crypto.js';
getCrypto(parsedData => {
console.log(parsedData);
// Do something with parsed data
})
关于JavaScript React promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49407457/