Как задать значение переменной ud внутри анонимной функции?
var ud = null;
client.getUserDetails(function (error, data) {
ud=data.skype;
});
console.log(ud);
здесь ud равен null.
Как задать значение переменной ud внутри анонимной функции?
var ud = null;
client.getUserDetails(function (error, data) {
ud=data.skype;
});
console.log(ud);
здесь ud равен null.
предполагаю, что в конкретном случае проблема в том, что client.getUserDetails выполняется асинхронно.
тогда заголовок(предлагаю заменить, используется для поиска) вопроса должен звучать так:
в таком случае console.log(ud); выполняется до того, как произойдёт присвоение переменной ud=data.skype;
void function(){
let c = null
setTimeout(function() {
c = 40
console.log(`c2:${c}`);
}, 1e3);
setTimeout(function() {
console.log(`c3:${c}`);
}, 1e3+5);
console.log(`c1:${c}`);
}()
из разряда вредных советов, может сработать а может и нет
void function(){
let c = null
let doWithC = function(_c){
console.log(`c:${_c}`);
}
setTimeout(function() {
c = 40
doWithC(c)
}, 1e3);
}()
Promisevoid function () {
let c = null
new Promise((_rs, _rj) => {
setTimeout(function () {
c = 40
_rs()
}, 1e3)
})
.then(() => {
console.log(`c:${c}`);
})
.catch(_e => console.log(_e))
}()
Promise совместно с async/await для имитации синхронностиvoid async function () {
let c = null
await new Promise((_rs, _rj) => {
setTimeout(function () {
c = 40
_rs()
}, 1e3)
})
console.log(`c:${c}`);
}()
void async function () {
let c = null
c = await new Promise((_rs, _rj) => {
setTimeout(function () {
_rs(40)
}, 1e3)
})
console.log(`c:${c}`);
}()
void async function () {
let c = null
c = await new Promise((_rs, _rj) => {
setTimeout(function () {
try {
throw new TypeError('some error')
_rs(40)
} catch (error) {
_rj(error)
}
}, 1e3)
})
.catch(_e => {
console.log(_e)
return null
})
console.log(`c:${c}`);
}()