Я хочу иметь доступ к массиву вне функции или вне цикла в nodejs. Я написал следующий код.
var result = [];
function setid (swfid){
crud.getswift(swfid).then(function (response) {
console.info("response",response);
result = response;
// res.send(response);
}).catch(function (err) {
return ("error:" + err);
});
console.info("result",result);
}
console.info("result",result);
Но его возвращение null. ваши предложения, пожалуйста





Вы написали новый оператор в вызове функции и, следовательно, вы его определили. Это одна из ошибок. Кроме того, как упомянул первый человек, комментирующий этот ответ, у вас здесь есть асинхронный вызов. Следовательно, вам нужно вернуть обещание от setid и дождаться ответа, чтобы получить результат.
@ GrégoryNEUT позор мне, я соответствующим образом обновил ответ. Спасибо.
Но тогда это немного странно, потому что ему не нужно оборачивать crud.getswift другим обещанием, поскольку это обещание. На мой взгляд, в этом вопросе чего-то не хватает.
crud.getswift. получает ответ, но setSeid() также получает ответ. когда я консолью ответ, такой как console.info("response",response);, когда я пытаюсь назначить одной переменной ее return null
Вы смешиваете логику Aysnc с синхронизацией. Вы не получите ответа за пределами области действия функции .then, потому что в то время, когда вы пытаетесь получить результаты, ответа нет.
Попробуйте использовать обратный вызов в обещании - вам нужно будет вызвать функцию в обратном вызове обещания и отправить ответ как параметр функции, а затем поиграть с данными.
> Promise / API call etc
.then(() => gotDataCallBack(data));
gotDataCallBack(data){
// handle your data and logic here.
// this will make sure you have the data available before you move ahead with
your application/manipulation logic.
}
Неа. Вызов асинхронный, вы оба раза будете отображать пустой результат.