鍍金池/ 問(wèn)答
淡墨 回答

canvas、語(yǔ)義化、webSocket、多媒體標(biāo)簽、本地存儲(chǔ),常用的就這些了。
html5的話,還有webRTC、webVTT以及一些新的api,具體可以參考下MDN里面的介紹:
https://developer.mozilla.org...

情殺 回答

一、reject后的東西,一定會(huì)進(jìn)入then中的第二個(gè)回調(diào),如果then中沒(méi)有寫(xiě)第二個(gè)回調(diào),則進(jìn)入catch


 var p1=new Promise((resolve,rej) => {
    console.log('沒(méi)有resolve')
    //throw new Error('手動(dòng)返回錯(cuò)誤')
    rej('失敗了')

 })

 p1.then(data =>{
    console.log('data::',data);
 },err=> {
    console.log('err::',err)
 }).catch(
    res => {
    console.log('catch data::', res)
 })

 VM367054:2 沒(méi)有resolve
 VM367054:11 err:: 失敗了
  • then中沒(méi)有第二個(gè)回調(diào)的情況

 var p1=new Promise((resolve,rej) => {
    console.log('沒(méi)有resolve')
    //throw new Error('手動(dòng)返回錯(cuò)誤')
    rej('失敗了')

 })

 p1.then(data =>{
    console.log('data::',data);
 }).catch(
    res => {
    console.log('catch data::', res)
 })

 VM367054:2 沒(méi)有resolve
 VM367054:11 catch data:: 失敗了
  • 如果沒(méi)有then, 也可以直接進(jìn)入catch
 var p1=new Promise((resolve,rej) => {
    console.log('沒(méi)有 resolve')
    //throw new Error('手動(dòng)返回錯(cuò)誤')
    rej('失敗了')

 })

 p1.catch(
    res => {
    console.log('catch data::', res)
 })
VM367087:2 沒(méi)有resolve
VM367087:9 catch data:: 失敗了

二、resolve的東西,一定會(huì)進(jìn)入then的第一個(gè)回調(diào),肯定不會(huì)進(jìn)入catch

 var p1=new Promise((resolve,rej) => {
    console.log('resolve')
    //throw new Error('手動(dòng)返回錯(cuò)誤')
    resolve('成功了')

 })

 p1.then(data =>{
    console.log('data::',data);
 }).catch(
    res => {
    console.log('catch data::', res)
 })
VM367087:2 resolve
VM367087:9 data:: 成功了
  • 不會(huì)進(jìn)入catch的情況
 var p1=new Promise((resolve,rej) => {
    console.log('resolve')
    //throw new Error('手動(dòng)返回錯(cuò)誤')
    resolve('成功了')

 })

 p1.catch(
    res => {
    console.log('catch data::', res)
 })
VM367087:2 resolve

throw new Error 的情況和rej一樣,但是他倆只會(huì)有一個(gè)發(fā)生
另外,網(wǎng)絡(luò)異常(比如斷網(wǎng)),會(huì)直接進(jìn)入catch而不會(huì)進(jìn)入then的第二個(gè)回調(diào)

懷中人 回答

可以試下input或者change事件

落殤 回答

  為了平衡編譯時(shí)間和運(yùn)行效率。事實(shí)上經(jīng)過(guò)一段時(shí)間后,JVM會(huì)把熱點(diǎn)代碼編譯成機(jī)器碼。詳情可以看看極客時(shí)間《深入拆解Java虛擬機(jī)》第1講“Java代碼是怎么運(yùn)行的”。作者是Oracle GraalVM虛擬機(jī)開(kāi)發(fā)者,Oracle高級(jí)研究員,計(jì)算機(jī)博士。

笑忘初 回答

出現(xiàn)瀏覽器崩潰的原因是,你瀏覽器占用的內(nèi)存爆倉(cāng)了。你的reader.onloadend方法把base64的數(shù)據(jù)都存起來(lái)了,這里是存到內(nèi)存當(dāng)中,當(dāng)數(shù)據(jù)量很大的情況下,就會(huì)出現(xiàn)內(nèi)存爆倉(cāng),瀏覽器沒(méi)有額外的內(nèi)存去正常運(yùn)行了。
你需要限制一下上傳文件的大小,當(dāng)文件過(guò)大的情況下,推薦采用 分片上傳技術(shù),使用類似于js-spark-md5前端js類庫(kù)。參考html5大文件上傳技術(shù)

吃藕丑 回答

你所說(shuō)的卡住,具體指的是什么?

離夢(mèng) 回答

變換一下數(shù)據(jù)結(jié)構(gòu)

let a = [
    [
        { "11": "" },
        { "1": "" },
        { "2": "" },
    ]   
]
let b={
    "11":"",
    "1":"",
    "2":"",
}
for(let i in a){
    for(let j in a[i]){
        console.log(a[i][j])
    }
}
 
/* 
{ '11': '' }
{ '1': '' }
{ '2': '' }
 */

for(let k in b){
    console.log(k+":"+b[k])
}
/* 
1:
2:
11:
*/
初心 回答
每個(gè)數(shù)組元素值盡量相等

這個(gè)可以表述為 “使得標(biāo)準(zhǔn)差最小”,即

給出兩個(gè)數(shù) m, 及 n,求一個(gè)標(biāo)準(zhǔn)差最小的數(shù)組 array,并滿足 len(array) == m,且 sum(array) == n。

只要找出該數(shù)組,再隨機(jī)打亂元素順序便可。


我覺(jué)得很多同學(xué)都答出來(lái)了,本人傾向 @papersnake 的一個(gè)答案

function foo(m,n){
  var i = parseInt(m/n)
  var j = m % n
  console.log(j)
  var arr = new Array(n).fill(i)
  for(var d=0;d<j;d++){
    arr[d]=arr[d]+1
  }
  return arr
}

var d= foo(11,3)
console.log(d)

當(dāng)然,他這里沒(méi)有做隨機(jī)操作。

骨殘心 回答

所有的選中控制操作都不要自己控制,全部交給props,每次選中都是通過(guò)事件上傳狀態(tài),自頂向下賦值

我甘愿 回答

你應(yīng)該修改這個(gè)配置項(xiàng);

chunkFilename: "xxx.css"
情皺 回答

1、關(guān)于type.js,確實(shí)只是一個(gè)規(guī)范化的管理方式,把所有的mutations的操作,都定義在type.js里面。
2、存儲(chǔ)方式,目前項(xiàng)目中使用了vuex-persistedstate 這個(gè)插件。默認(rèn)使用的是localStorage。當(dāng)然你可以選擇SessionSorage以及cookie。這些選擇都是基于你了解了他們之間的區(qū)別,以及根據(jù)項(xiàng)目需求來(lái)選擇的。沒(méi)有最好,只有最合適把

莫小染 回答

不知道你是否需要的是這個(gè)效果。

clipboard.png

css 代碼如下,就是在你的基礎(chǔ)上增加了點(diǎn)熟悉 和修改名稱

        <style type="text/css">
            ul {
                list-style: none;
                width: 100%;
            }
            
            .li-item {
                width: 23%;
                text-align: center;
                height: 255px;
                float: left;
                display: inline-block;
                border-radius: 5px;
                border: 1px #ccc solid;
                cursor: pointer;
            }
            
            .content {
                width: 1140px;
                position: relative;
            }
        </style>

html 代碼如下

        <div class="content">
            <ul>
                <li class="li-item">
                    <img src="img/lanmeifengmi001.jpg" />
                    <p>這是一個(gè)商品</p>
                </li>
                <li class="li-item">
                    <img src="img/lanmeifengmi001.jpg" />
                    <p>這是一個(gè)商品</p>
                </li>
                <li class="li-item">
                    <img src="img/lanmeifengmi001.jpg" />
                    <p>這是一個(gè)商品</p>
                </li>
                <li class="li-item">
                    <img src="img/lanmeifengmi001.jpg" />
                    <p>這是一個(gè)商品</p>
                </li>
                <li class="li-item">
                    <img src="img/lanmeifengmi001.jpg" />
                    <p>這是一個(gè)商品</p>
                </li>
                <li class="li-item">
                    <img src="img/lanmeifengmi001.jpg" />
                    <p>這是一個(gè)商品</p>
                </li>
                <li class="li-item">
                    <img src="img/lanmeifengmi001.jpg" />
                    <p>這是一個(gè)商品</p>
                </li>
            </ul>
        </div>

希望能幫助你

神曲 回答

下載下來(lái)是什么要看你的href屬性里面寫(xiě)的是什么了。你寫(xiě)一個(gè)文件他就下載那個(gè)文件

哚蕾咪 回答

constructor里面不適合進(jìn)行網(wǎng)絡(luò)請(qǐng)求,可以在 componentWillMount里面

葬憶 回答

給 this.props.children 處理下呢const children = arrayify(this.props.children)

瘋浪 回答
const data = [
    { name: '管理員', code: 'admin' },
    { name: '用戶', code: 'user' },
    { name: '超管', code: 'super' }
]
const names = ['管理員', '用戶']
let codes = []
data.forEach(dataItem => {
    const { name, code } = dataItem
    if (names.indexOf(name) !== -1) {
        codes.push(code)
    }
})
console.log(codes)