這是用jq的吧,click事件中處理,用addClass()/添加class方法和removeClass()/移除class方法
你的例子太過(guò)于復(fù)雜,什么第一層第二層的,看了老半天。
提煉你的要點(diǎn):1、并發(fā) 2、高效率
1、并發(fā)
使用Promise.all就行了。比如:
await Promise.all([p1, p2, p3]);
或者直接執(zhí)行
for (let i = 0; i < datas.length; i++) {
let info = datas[i];
sleep(info).then((value) => {
console.log(value);
});
}
參考:https://segmentfault.com/q/10...
2、高效率。
何為高效率?只不過(guò)就是你想控制并發(fā)數(shù)罷了。要么自己實(shí)現(xiàn)計(jì)數(shù),要么使用第三方封裝好的。比如async,設(shè)置并發(fā)20個(gè)
var mapLimit = require("async/mapLimit");
mapLimit(datas, 20, async function(info, callback){
return await sleep(3);
}, function(err, result){
});
如果想弄清楚原理,這里貼一個(gè)函數(shù),可以控制并發(fā):
function map(arr, fn, concurrency) {
concurrency = concurrency || 1;
return new Promise(function(resolve, reject) {
var completed = 0;
var started = 0;
var running = 0;
var results = new Array(arr.length);
(function replenish() {
if (completed >= arr.length) {
return resolve(results);
};
while (running < concurrency && started < arr.length) {
running++;
started++;
var index = started - 1;
console.log('hd', arr[index], arr[index], index);
fn.call(arr[index], arr[index], index) // item,index
.then(function(result) {
// console.log('done');
running--;
completed++;
results[index] = result;
replenish();
})
.catch(reject);
}
})();
});
}
sessionStorage是瀏覽器本地存儲(chǔ),不在網(wǎng)絡(luò)上傳輸。爬蟲(chóng)是HTTP協(xié)議。
你需要解決的是 sessionStorage里面存的key哪來(lái)的?一般是請(qǐng)求后端拿回來(lái)的,你把這個(gè)鏈接爬一下
1,這個(gè)不是錯(cuò)誤,只是一個(gè)警告,并不影響代碼的執(zhí)行。
2.如果你引用的不是 jq.mobble文件, 是沒(méi)有 tap這個(gè)事件的, 請(qǐng)你先用click 試試
3.jq 本身不支持tap 事件, zepto.js 和touch.js才支持tap
可以用重定向
<BrowserRouter
forceRefresh={!('pushState' in history)}
keyLength={12}
<Switch>
< Route exact path="/" render={() => <Redirect to="/users/one"}/>
</Switch>
</BrowserRouter>
你說(shuō)的這種情況在刷新的時(shí)候也存在,比如跳轉(zhuǎn)到/list下,刷新頁(yè)面就無(wú)法顯示還報(bào)錯(cuò)。
試一下這種方式:
render(
<BrowserRouter>
<Switch>
<Route exact path="/" component={Index}/>
<Route exact path="/list" component={List}/>
</Switch>
</BrowserRouter>,
document.getElementById('container')
);resolve若接受一個(gè)promise對(duì)象,則會(huì)等待該promise對(duì)象的狀態(tài)變?yōu)閞esolved/rejected來(lái)決定自身狀態(tài)
你用的jq版本是1.10, 而toggle函數(shù)自jq 1.9開(kāi)始就已經(jīng)被移除了, 所以你調(diào)用toggle方法的時(shí)候, 會(huì)報(bào)方法不存在,建議調(diào)用1.9以下版本。
1的代碼不完整,ajax后面還有一節(jié)呢
2datatype為什么是formdata
3ajax之前的需要console打印出來(lái)看一下
你這個(gè)代碼如果是要表達(dá) 所有需要上傳的圖片的localId都放在數(shù)組localIds里面,你逐一上傳,知道數(shù)組為空,就停止執(zhí)行 這個(gè)邏輯的話,問(wèn)題出現(xiàn)下面幾個(gè)地方:
1.使用了Promise就不用使用callback了
2.你的localIds數(shù)組的長(zhǎng)度沒(méi)減少,所有不會(huì)走到resolve里面。
3.用Promise做類(lèi)似于遞歸的調(diào)用錯(cuò)了。
我模擬你的需求寫(xiě)了一個(gè),因?yàn)槲也恢滥愕膌ocalIds,serverIds,所以模擬了兩個(gè)。
var localIds = [0, 1, 2, 3];
var serverIds = [];
function uploadImage (localIds) {
return new Promise (function (resolve, reject) {
if (localIds.length == 0) {
//所選圖全部上傳成功了
return resolve({isFinished: true, data: serverIds});
} else {
var localId = localIds[0];
wx.uploadImage({
localId: localId, // 需要上傳的圖片的本地ID,由chooseImage接口獲得
isShowProgressTips: 1, // 默認(rèn)為1,顯示進(jìn)度提示
success: function (res) {
serverIds.push(res.serverId);//// 返回圖片的服務(wù)器端ID
localIds.shift();
return resolve({isFinished: false});
}
});
}
}).then(({isFinished, data}) => {
return isFinished ? Promise.resolve(data) : uploadImage(localIds);
})
}
uploadImage(localIds).then((data) => {
// 所有圖片的服務(wù)器端ID
console.log(data);
})var obj = [
{
"省會(huì)": "北京123",
"金額": 29097061.66
},
{
"省會(huì)": "廣州123",
"金額": 19784491.69
},
{
"省會(huì)": "杭州123",
"金額": 14068375.59
},
{
"省會(huì)": "南1京1",
"金額": 13391405.93
},
{
"省會(huì)": "香22港3",
"金額": 11244012.29
},
{
"省會(huì)": "香22港3",
"金額": 11244012.29
},
{
"省會(huì)": "香22港3",
"金額": 11244012.29
}
] //此處是原始數(shù)據(jù)
var obj1 = [
{
"省會(huì)": "北京123",
"金額": 29097061.66
},
{
"省會(huì)": "廣州123",
"金額": 19784491.69
},
{
"省會(huì)": "杭州123",
"金額": 14068375.59
},
{
"省會(huì)": "南1京1",
"金額": 13391405.93
},
{
"省會(huì)": "香22港3",
"金額": 11244012.29
},
{
"省會(huì)": "香22港3",
"金額": 11244012.29
},
{
"省會(huì)": "臺(tái)灣",
"金額": 11244012.29
}
] //此處是取發(fā)生變化后的數(shù)據(jù)
for (var i = 0 ; i < obj.length; i++) {
if (obj[i].金額 == obj1[i].金額 && obj1[i].省會(huì) == obj1[i].省會(huì)) {
} else {
obj[i].金額 = "此處填寫(xiě)要替換成什么值";
obj[i].省會(huì) = "此處填寫(xiě)要替換成什么值";
}
}
//最后obj就是替換成功后的新對(duì)象數(shù)組
在build文件夾下有utils.js,注意這里
其中return中返回相關(guān)loader的迭代器,注釋掉
// postcss: generateLoaders(),即可for循環(huán)結(jié)束后,i=3;
obj在循環(huán)外(又是一個(gè)對(duì)象,會(huì)被引用。你不用對(duì)象就不會(huì)有問(wèn)題)最后拿到的就都是i=3的時(shí)候的數(shù)據(jù)。
所以你需要把obj的聲明放循環(huán)里面,每次循環(huán)結(jié)束后,obj這個(gè)對(duì)象都會(huì)被重新構(gòu)造,不會(huì)出引用問(wèn)題,賦值就OK了。
ModalComponent構(gòu)造參數(shù)中要寫(xiě)修飾符如public、private、readonly等等。這樣才會(huì)自動(dòng)構(gòu)造屬性并創(chuàng)建。
constructor(
public options: ModalOptions
) {
console.log(options);
}path是不帶協(xié)議和主域的路徑部分,比如http://www.baidu.com/index.ht...,path:'/'。window.location.host是主域。
簡(jiǎn)化下問(wèn)題就是如下代碼段:
fn2函數(shù)因?yàn)樵趏nload函數(shù)中定義,此作用域在onload函數(shù)內(nèi),出了這個(gè)函數(shù)就不能被訪問(wèn)到
fn1函數(shù)定義在全局作用域下,可以被全局訪問(wèn)
<script>
function fn1(){
console.log("fn1");
}
</script>
<script>
window.onload=function(){
console.log("~~onload~~");
fn1();
function fn2(){
console.log("fn2")
}
}
</script>
<script>
fn2();//Uncaught ReferenceError: fn2 is not defined
</script>如果用原生的,是沒(méi)辦法的??梢钥紤]用js模擬的對(duì)話框。
用了一下午搞清楚了,是因?yàn)楝F(xiàn)在react-router版本是4了,所以之前的不支持了。
參考這個(gè)https://segmentfault.com/a/11...
把用戶名和密碼進(jìn)行base64加密,具體怎么做看你(例如:可以先base64加密一次在記入一串定義的字符串在進(jìn)行base64加密)
base64只是其中一種 看你怎么選擇,這種加密還是選擇可逆加密然取不出原來(lái)的值,例如:md5就不能取出原來(lái)的值
把用戶名和密碼寫(xiě)入input框是,進(jìn)行對(duì)應(yīng)的base64解密就行(進(jìn)行幾次加密就要進(jìn)行幾次解密)
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。