У меня есть функция, которая возвращает случайный цвет в обратном вызове, например:
function getRandomColor(callback) {
var colors = [
'greyblue',
'lightblue',
'blue',
'lightgreen',
'darkgreen',
'purple',
'pink',
'red',
'yellow',
'brown'
];
var random = Math.floor(Math.random() * colors.length+1);
var color = colors[random];
return callback(color);
}
Эта функция вызывается в другой функции, которой требуется значение из обратного вызова. Но color
от обратного вызова иногда пусто. Кто-нибудь может объяснить, почему это происходит? Я использую функцию обратного вызова, чтобы на самом деле предотвратить пустое значение, но похоже, что оно не является водонепроницаемым решением.
function createCategory(name, access_token, callback){
getRandomColor(function(color){
countr.callApi(
{
url: 'categories',
method: 'POST'
}, {
name: name,
visible: true,
color: color
},
access_token,
function(err, category){
return callback(err, category);
}
)
})
}
Поскольку используемому API-интерфейсу требуется цвет для категории (которую мы хотим создать), этот вызов завершится ошибкой, поскольку color is undefined
. Я хочу знать, почему и как решить.