Используя ES2017, вы должны иметь это как объявление функции
async function foo() {
var response = await $.ajax({url: '...'})
return response;
}
и выполнить его следующим образом.
(async function() {
try {
var result = await foo()
console.log(result)
} catch (e) {}
})()
Или синтаксис Promise
foo().then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
indir_keys() {
eval "echo \${!$1[@]}"
}
indir_val() {
eval "echo \${$1[$2]}"
}
fullname()
{
pointer=$1
for i in $(indir_keys $pointer)
do
echo "$i $(indir_val $pointer $i)"
done
}
Дает:
Jack Ketchum
Clive Barker
Stephen King
H.P. Lovecraft
Из справочного руководства Bash :
Позиционные параметры временно заменяются при выполнении функции оболочки (см. Функции оболочки ). .
blockquote>Итак, вы можете сделать это:
fullname() { for first do echo "$first ${writer[$first]}" done } fullname "${!writer[@]}"
Поскольку Bash 4.3, declare
имеет флаг -n
для определения ссылок (это слабо эквивалентно ссылкам в C ++). Этот флаг значительно упрощает вашу проблему:
fullname() {
declare -nl pointer="$1"
for i in "${!pointer[@]}"
do
echo "${pointer[$i]} $i"
done
}
Будет безопасно, если у вас есть пробелы или смешные символы в ключах вашего хэша (в отличие от принятого ответа).