鍍金池/ 問答
冷咖啡 回答
  1. debouncethrottle是目前用得最廣泛的,具體可見樓上的一堆收藏;
  2. 想要確保邏輯上不會有同時提交的請求,npm搜“mutex”也有很多;
  3. 或者我也寫了一個簡易版的,用下面的函數(shù)包裹點擊回調,如果前一次請求尚未結束,新請求會和舊請求一起返回。這樣的話回調要返回Promise

    const debounceAsync = originalFunction => {
      let currentExcution = null;
      const wrappedFunction = async function () {
        // 1. locked => return lock
        if (currentExcution) return currentExcution;
    
        // 2. released => apply
        currentExcution = originalFunction.apply(this, arguments);
        try {
          return await currentExcution;
        }
        finally {
          currentExcution = null;
        }
      };
      return wrappedFunction;
    };

    用法

    const sleep = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms));
    
    const debounceAsync_UNIT_TEST = async () => {
      const goodnight = debounceAsync(sleep);
      for (let i = 0; i < 8; i++) {
        goodnight(5000).then(() => console.log(Date()));
        await sleep(500);
      }
      console.warn('Expected output: 8 identical datetime');
    };

    https://segmentfault.com/a/11...

乞許 回答

History API了解一下

https://developer.mozilla.org...

向瀏覽器歷史添加一個狀態(tài)history.pushState

https://developer.mozilla.org...

款爺 回答
wait for a server to send response headers (and start the response body) before aborting the request.

5秒是響應完成5秒還是響應開始時已經5秒?
timeout只是接收body前是否超時,開始接收body的那一刻起timeout就不管了。

怣人 回答

給你一個思路,不知道get沒get你的意思

首先用js對圖片寬高進行縮放,這個比較容易。

然后用很多種方式可以水平垂直居中;

margin-left: 50%;
margin-top: 50%;
transform: translate(-50%, -50%)

或者在 flex 內部

margin:auto

礙你眼 回答

其實更好的方法是你建立一個內部數(shù)據(jù)集,對左邊每個標題元素有一個穩(wěn)定(全局唯一的id,且不受過濾等影響),然后根據(jù)點擊查詢到這個id用于顯示右邊數(shù)據(jù)。
就是想辦法維護一個 index 和 id的對應表就可以查詢到正確數(shù)據(jù)了。

厭遇 回答
  1. 代碼第九行不要使用inin用于判斷一個對象有沒有一個屬性,不能判斷一個數(shù)組是否包含某個元素,使用includes代替;
  2. 代碼第10行使用str = str.replace重新給str賦值;
function rot13 (str) {
  var empty = [];
  for (var i = 0; i < str.length; i++) {
    empty.push(str.charCodeAt(i))
  }
  var left = empty.filter(function (x) {return x >= 65 && x <= 77})
  var right = empty.filter(function (y) {return y >= 78 && y <= 90})
  for (var j = 0; j < str.length; j++) {
    if (left.includes(str.charCodeAt(j))) { // 使用includes
      str = str.replace(str[j], String.fromCharCode(str.charCodeAt(j) + 13)) // 重新賦值
    }
  }
  return str
}
鐧簞噯 回答

也可以考慮將父元素設置為display: table-cell; text-align: center

涼汐 回答

網不行,用瀏覽器訪問github看看能不能訪問
2.9.4版的vue-cli似乎有問題,用2.9.3版的可以正常init
可以運行以下命令解決

npm uninstall -g vue-cli
npm install -g vue-cli@2.9.3

如果不想裝2.9.3,可以換一條命令init

vue-init webpack attendance

2.9.4直接運行vue XXX的命令似乎都有或多或少的問題


vue-cli 2.9.3使用下面的設置新建項目,可以正常運行npm run dev

圖片描述


你這個init時npm安裝依賴報錯了,嘗試使用yarn安裝依賴

陌南塵 回答

從我這邊看,返回的是到 https://segmentfault.com/ 的 302。

孤影 回答

可以將ajax請求改成同步請求,請求返回后再關閉頁面

帥到炸 回答

不太清楚,你有新的發(fā)現(xiàn)嗎?

憶當年 回答

你是對js的引用類型理解不充分

console.log(document.createElement("script")===document.createElement("script"))

你運行一下上面的代碼,看看結果
還有

ret=fn.apply(this,arguments)

相當于

ret=document.createElement("script");

ret=(function(){
    return document.createElement("script");
}).apply(this,arguments)

ret=window.(function(arguments){
return document.createElement("script");
})=document.createElement("script");

是只有訪問一個未定義的變量時,才會去window對象上面找

避風港 回答

createElement()的調用方式如下:

React.createElement(
  type,
  [props],
  [...children]
)

綁定事件寫在[props]中,例如:

var target = React.createElement('button', {
  onClick: () => { alert('lol') },
}, 'Click me');

ReactDOM.render(
        target,
        document.getElementById('root')
);

DEMO:
https://codepen.io/CodingMonk...

避風港 回答

從我的水平來看,這么寫是可以的,哈哈,不過還是有可以修改的 select_index.push(this.tableAllData[index])中的this.tableAllData[index] 可以直接是val,你不是已經循環(huán)遍歷出來了嗎