検索

ホームページ  >  に質問  >  本文

javascript - js で false を返しても下向きの実行を防ぐことができないのはなぜですか

リーリー

//最初の return false は有効です
//2 番目の return false は無効です
理由は何ですか

欧阳克欧阳克2764日前3958

全員に返信(5)返信します

  • 世界只因有你

    世界只因有你2017-06-12 09:23:55

    質問の最初のreturn falseは同期的に呼び出されるため、効果が確認できます;

    $.post メソッドは非同期で実行されるため、$.post方法是异步执行的,因此在$.post方法的回调函数里面return false的时候,其实是生效了的,但是在执行这句代码的时候,$.post外面的代码早就执行完成了,所以看不到效果而已。另外,在回调函数里面加这句代码并没有什么意义,因为即使是return,也是退出当前执行的函数,即$.post的回调函数,并不能阻止$.post$.post メソッドのコールバック関数内にある場合に実際に有効になりますが、このコードを実行するとの場合、$.post の外側のコードはすでに実行されているため、効果は表示されません。さらに、このコードをコールバック関数に追加することは意味がありません。return ですら、現在実行中の関数、つまり $.post のコールバック関数を終了するからです。 $.post の外でのコードの実行を防ぐことはできません。

    $.post メソッドのコールバック関数に$.post请求成功之后执行的,那就把代码放到$.post方法的回调函数里面去吧。例如题主如果本意想让alert('1111')在请求成功后通过条件判断执行,那可以alert('11111')配置する必要があるコードがある場合;

    ここで被験者に対する同期と非同期について説明します。たとえば、被験者はコードを書いていて喉が渇いたので、水を沸騰させて飲みに行きます。このプロセスでは、サブジェクトはスレッドに相当します。サブジェクトが現在実行している内容は、喉が渇いたときに水を入れて沸騰させることです。心配する必要はありません。コードを書くには、水が調理されるまで待つだけで済みます。調理したら、取り出して自分で飲むだけです。対象のコードは上から順に実行され、$.post就发送一个请求,请求的过程中外部的js还是继续执行(并没有等待$.post请求返回结果),等到ajax请求返回了,再回调之前定义的回调函数。这里除了$.postまで実行されると非同期で実行され、残りのコードが同期的に実行されます。

    さらに、質問の正規表現は/^1[34578]d{9}$/g

    のように記述できると個人的には最適化できることがわかりました。

    返事
    0
  • 漂亮男人

    漂亮男人2017-06-12 09:23:55

    Return は現在の関数を返します。最初の戻りはクリック イベントのコールバック関数であり、2 番目の戻りは Ajax リクエストのコールバック関数です。当然、外部関数のコールバックは妨げられません。

    返事
    0
  • 学习ing

    学习ing2017-06-12 09:23:55

    post の関数は非同期関数であり、リクエストが成功した後にのみ呼び出され、リクエストが正常に返されるまで、コードは実行され続けます。したがって、return false ステートメントは無効です。解決策は、$.post() の非同期関数内ではなく、非同期関数の外側に return false を置くことです。

    返事
    0
  • 某草草

    某草草2017-06-12 09:23:55

    $.post 是异步执行的,需要使用 $.ajax 并设置 async: false

    返事
    0
  • 巴扎黑

    巴扎黑2017-06-12 09:23:55

    alert(1111)と同じレベルに配置します

    返事
    0
  • キャンセル返事