"Conditional" 来自 Javascript 异步请求的回调
"Conditional" callbacks from asynchronous requests in Javascript
所以我一直在看一堆关于回调的问题,但我似乎无法全神贯注地让我自己的代码正常工作。我正在尝试使用 Soundcloud API 检查 URLs 以确保它们指向工作声音。
function urlOK(url){
SC.initialize({
client_id: 'my_client_id'
});
SC.resolve(url).catch(function(error) {
console.log(error.message);
return false; // have tried callback here
});
// also want to return true if no errors are found
}
function checkAllInput(){
if(urlOK(some_url){
// do more logic
}
}
根据显示的代码,urlOK 当然会在 checkAllInput 函数中跳过 resolve() 调用和 "returns" false。我尝试在指示的位置向 urlOK 添加回调函数,这正确处理了错误的 URL 输入。虽然 URL 的输入没有 "catch",但我对应该如何进行感到非常困惑。
我很乐意使用 jQuery,如果它能让事情变得更简单的话。 :) 我也对完全不同的方法持开放态度,并将尽我所能回答问题。感谢您的帮助!
您在这里看到的是 Promise。不是回调。
如果你想使用回调,你会想做这样的事情:
function urlOK(url, callback, error){
SC.initialize({
client_id: 'my_client_id'
});
SC.resolve(url).then(callback).catch(error);
}
function urlIsGood(){
console.log('Url is good')
}
function urlIsBad(){
console.log('Url is bad')
}
function checkAllInput(){
urlOK(some_url, urlIsGood, urlIsBad)
}
所以我一直在看一堆关于回调的问题,但我似乎无法全神贯注地让我自己的代码正常工作。我正在尝试使用 Soundcloud API 检查 URLs 以确保它们指向工作声音。
function urlOK(url){
SC.initialize({
client_id: 'my_client_id'
});
SC.resolve(url).catch(function(error) {
console.log(error.message);
return false; // have tried callback here
});
// also want to return true if no errors are found
}
function checkAllInput(){
if(urlOK(some_url){
// do more logic
}
}
根据显示的代码,urlOK 当然会在 checkAllInput 函数中跳过 resolve() 调用和 "returns" false。我尝试在指示的位置向 urlOK 添加回调函数,这正确处理了错误的 URL 输入。虽然 URL 的输入没有 "catch",但我对应该如何进行感到非常困惑。
我很乐意使用 jQuery,如果它能让事情变得更简单的话。 :) 我也对完全不同的方法持开放态度,并将尽我所能回答问题。感谢您的帮助!
您在这里看到的是 Promise。不是回调。
如果你想使用回调,你会想做这样的事情:
function urlOK(url, callback, error){
SC.initialize({
client_id: 'my_client_id'
});
SC.resolve(url).then(callback).catch(error);
}
function urlIsGood(){
console.log('Url is good')
}
function urlIsBad(){
console.log('Url is bad')
}
function checkAllInput(){
urlOK(some_url, urlIsGood, urlIsBad)
}