我目前正試圖實現以下操作,並按順序執行工作流程: 1.檢索包含重定向URI/URL(如果成功)的URL。 2.使用檢索到的URL打開新窗口,該窗口基本上重定向回到同一頁面,但現在URL的後面附加了'code = randomCode'。 3.解析出randomCode作爲別的東西的輸入。jQuery推遲的承諾似乎不適用於打開新窗口
問題: 在這一刻,我使用jQuery承諾首先$ .get(number 1),.then(do number 2),.then(do number 3)。
問題是,這整個功能只能在一次失敗後出現。即每次刷新時,第一次打開新窗口,但其他部分不會成功,即randomCode不會被成功解析出來,因爲在那個階段,jQuery無法檢測到打開的窗口,即使它應該因爲它正在使用。
但是,第一次失敗後,一旦打開窗口,每次後續嘗試都能成功地檢索到所有內容。
這是怎麼回事?有人可以幫忙嗎?我的代碼示例如下:
var retrievedURL;
var desiredString;
function getURL() {
$(document).ready(function() {
$.get(firstURL) // assume valid URL
.then(function(response) {
$('#url').html('Click this');
$('#url-link').attr("href",response.url);
retrievedURL = response.url;
})
.then(function() {
newWindow = window.open(retrievedURL ,'test');
})
.then(function() {
desiredString = newWindow.location.search.substr(6);
})
})
}
所以這就是函數的要點。我當然會繼續用desiredString做一些事情,但不知何故,每一次,第一次運行,desiredString都是null。
刪除的getURL功能。這是防止你的代碼被綁定到document.ready – Oisin
試了一下,然後它運行在一個無限循環... –