簡體   English   中英

JavaScript回調似乎無效

[英]JavaScript callback doesn't seem to work

這可能是一個簡單的問題,但是我具有以下功能:

addValues();
function addValues() {
    addObsToMap(function() {
        addMeansToMap();
    });                 
}

它們的定義如下:

function addObsToMap(callback) {
    console.log("addObsToMap");
    callback();
}                                                               

function addMeansToMap() {
    console.log("addMeansToMap");   
}   

我想做的是在調用“ addMeansToMap”之前先調用“ addObsToMap”,但是當前代碼並沒有發生這種情況,因為當前在“ addObsToMap”之前返回“ addMeansToMap”。 我想念什么?

你確定嗎? 在js中提琴addobs首先完成

https://jsfiddle.net/moym1n8c/

console.log('first');
addValues();   

結果是 :

first
addobjstomap
addmeanstomap

似乎工作得很好。

但是不同的瀏覽器和不同的版本可能具有不同的實現。

我要進行的更改將只是傳遞“ addMeansToMap”函數作為回調,而不是創建一個新的函數來執行它。

 addValues(); function addValues() { addObsToMap(addMeansToMap); } function addObsToMap(callback) { console.log("addObsToMap"); callback(); } function addMeansToMap() { console.log("addMeansToMap"); } 

這樣,如果需要,我們還可以更輕松地將數據從addObsToMap傳遞到addMeansToMap,而無需全局變量。

  addValues(); function addValues() { addObsToMap(addMeansToMap); } function addObsToMap(callback) { console.log("addObsToMap"); callback("addMeansToMap"); } function addMeansToMap(arg) { console.log(arg); } 

硬編碼 addMeansToMap(); 當您調用其他函數而不是將其作為回調傳遞時被調用。 要解決這個問題,只需調用addMeansToMap(); 在執行完其他代碼之后,從另一個函數返回。

function addObsToMap() {
     console.log("addObsToMap");   
     addMeansToMap();
} 

function addMeansToMap(){ 
     console.log("addMeansToMap");
} 

使用參數回調還請注意,在調用函數時,實際上並沒有將函數作為回調傳遞。

addValues(); 
function addValues(){ 
    addObsToMap(addMeansToMap);
}

以上方法可以使原始的Obs和Means函數保持相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM