[英]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.