Hướng dẫn dùng whislt JavaScript

Tôi cần gọi hàm và kiểm tra giá trị dữ liệu (người chiến thắng) trong đối tượng JSON mà nó trả về. Nếu đó là sự thật, tôi cần gọi lại chức năng cho đến khi người thắng cuộc == sai.

Tôi không thể sử dụng trong khi vì nó không đồng bộ, làm thế nào tôi có thể làm điều này?

  someFunction(function(result) {
     // if result.winner == true repeat 
  })

Hỏi ngày 21 tháng 12 năm 2014 lúc 11:53Dec 21, 2014 at 11:53

3

Bạn có thể gọi cùng một chức năng gọi lại cho đến khi điều kiện là true:

someFunction(function repeat(result) {
    if (result.winner) {
        someFunction(repeat);
    }
});

Kiểm tra bản demo dưới đây.

someFunction(function repeat(result) {
    document.body.innerHTML += '
' + result.winner; if (result.winner) { someFunction(repeat); } }); var results = [true, true, true, false]; function someFunction(callback) { setTimeout(function() { callback({winner: results.shift()}); }, (Math.random() + 1) * 1000 | 0); }

Đã trả lời ngày 21 tháng 12 năm 2014 lúc 12:17Dec 21, 2014 at 12:17

DFSQDFSQdfsq

Phù bằng vàng 190K2525 gold badges232 silver badges253 bronze badges

Bạn đã xem Async.js chưa? Nó có một số chức năng Async dòng điều khiển. Bạn có thể muốn nhìn vào trong khi, dowhilst, cho đến khi, dountil:

https://github.com/caolan/async#whilst

whilst(test, fn, callback)

Nhiều lần gọi FN, trong khi bài kiểm tra trả về đúng. Cuộc gọi gọi lại khi dừng hoặc xảy ra lỗi.

Đã trả lời ngày 22 tháng 12 năm 2014 lúc 14:32Dec 22, 2014 at 14:32

YuraayuraaYuraA

673 huy hiệu đồng3 bronze badges

0 điểm

Hơn 8 năm

Ở đây, chúng tôi được yêu cầu gọi chức năng nguồn trong khi chúng tôi vẫn đang xác định chức năng nguồn. Về mặt logic, nó không giống như điều này nên hoạt động, và nó cũng vậy, và nó cung cấp câu trả lời đúng.

Có phải chức năng năng lượng từ bài tập trước đó là nguồn điện (5.3) được gọi trong chức năng năng lượng hiện tại? Và nếu vậy thì làm thế nào mà nó hoạt động? Khi chúng ta xác định lại chức năng nguồn, chương trình vẫn có thể gọi chức năng nguồn trước đó như thế nào?

Cảm ơn!

Trả lời 53E550D39C4E9D53DC000182

Gọi một chức năng bên trong chính nó được gọi là đệ quy. Nó có một kỹ thuật được sử dụng cho nhiều ứng dụng, như trong việc in ra dòng Fibonacci. Vì vậy, trong bài tập này, bạn không gọi chức năng nguồn từ bài tập trước (5.3). Bạn đang tự gọi mình. Tôi sẽ làm hết sức mình để giải thích điều này.

Ví dụ: nếu chúng ta gọi là Power (3,2) - cơ sở 3 và số mũ là 2 - câu trả lời sẽ là 9. Cách máy tính giải quyết điều này như sau:

  1. Máy tính nhìn vào dòng trực tuyến nếu (số mũ == 0). Số mũ không bằng 0 (nó 2) vì vậy nó hoàn thành mã trong khối ‘khác. Lợi nhuận của nó ‘3 * Power (3,1)

  2. Nhưng máy tính không biết sức mạnh (3,1) là như vậy trước khi nó thực sự trả về một giá trị, nó sẽ giải quyết được lời kêu gọi này cho chức năng. Máy tính kiểm tra câu lệnh IF và vì số mũ không phải là 0, khối mã khác được hoàn thành. Vì vậy, sau khi chạy ‘Power (3,1), máy tính trả về‘ 3 * Power (3,0). Do đó, Power (3,1) = 3 * Power (3,0). Vì công suất (3,2) = 3 * công suất (3,1) và công suất (3,1) = 3 * công suất (3,0), chúng ta có thể nói một cách hợp lý công suất đó (3,2) = 3 * 3 * công suất (3,0).

  3. Bây giờ máy tính giải quyết sức mạnh (3,0). Vì số mũ bằng 0, máy tính chạy khối mã IF và 1 được trả về. Do đó, sức mạnh (3,2) = 3 * 3 * 1.

Tôi biết đây là một lời giải thích phức tạp và nó là một tháng sau khi bạn đăng câu hỏi của mình nhưng tôi hy vọng tôi đã giúp đỡ. Hãy cho tôi biết nếu bạn cần tôi giải thích điều gì đó.

điểm

Hơn 8 năm

Ở đây, chúng tôi được yêu cầu gọi chức năng nguồn trong khi chúng tôi vẫn đang xác định chức năng nguồn. Về mặt logic, nó không giống như điều này nên hoạt động, và nó cũng vậy, và nó cung cấp câu trả lời đúng.

  • Có phải chức năng năng lượng từ bài tập trước đó là nguồn điện (5.3) được gọi trong chức năng năng lượng hiện tại? Và nếu vậy thì làm thế nào mà nó hoạt động? Khi chúng ta xác định lại chức năng nguồn, chương trình vẫn có thể gọi chức năng nguồn trước đó như thế nào?

    Cảm ơn!

    Trả lời 53E550D39C4E9D53DC000182

    Trực lưu ngôn ngữ

  • Có phải chức năng năng lượng từ bài tập trước đó là nguồn điện (5.3) được gọi trong chức năng năng lượng hiện tại? Và nếu vậy thì làm thế nào mà nó hoạt động? Khi chúng ta xác định lại chức năng nguồn, chương trình vẫn có thể gọi chức năng nguồn trước đó như thế nào?

    Cảm ơn!

    Trả lời 53E550D39C4E9D53DC000182

    Trực lưu ngôn ngữ

  • Có phải chức năng năng lượng từ bài tập trước đó là nguồn điện (5.3) được gọi trong chức năng năng lượng hiện tại? Và nếu vậy thì làm thế nào mà nó hoạt động? Khi chúng ta xác định lại chức năng nguồn, chương trình vẫn có thể gọi chức năng nguồn trước đó như thế nào?

    Cảm ơn!

    Trả lời 53E550D39C4E9D53DC000182

    Trực lưu ngôn ngữ

Khám phá danh mục đầy đủ

Tôi có thể gọi chức năng bên trong cùng một hàm js không?

Gọi một chức năng từ bên trong được gọi là đệ quy và câu trả lời đơn giản là, vâng. and the simple answer is, yes.

Bạn có thể gọi một chức năng trong một chức năng khác không?

Điều quan trọng là phải hiểu rằng mỗi chức năng chúng tôi viết có thể được sử dụng và được gọi từ các chức năng khác mà chúng tôi viết.Đây là một trong những cách quan trọng nhất mà các nhà khoa học máy tính gặp vấn đề lớn và chia nó thành một nhóm các vấn đề nhỏ hơn.