"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。不是回调。

参见:Promise - MDN

如果你想使用回调,你会想做这样的事情:

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)
}