애플릿에 h5 이미지 업로드(Generator 사용)

2749 단어
작은 프로그램에 h5를 끼워서 사진을 올리는 것은 구덩이입니다. 괴롭히는 저는 성질이 없습니다. 원래의 input는 사용할 수 없습니다. jsskd를 사용해야 합니다. 그리고 step1은 wxChooseImage를 사용해서 사진을 선택하고 step2는 wxUploadImage를 사용해서 사진을 위챗 서버 step3 백엔드에 올려서'위챗으로 임시 소재 얻기'사진을 로컬 서버 step4에 다운로드하여 로컬 서버 주소로 돌아가서 전방의 wxChooseImage로 보내면 여러 장의 사진을 선택할 수 있습니다.wxUploadImage는 한 장만 업로드할 수 있고 동시 전송은 지원되지 않습니다.제일 먼저 생각나는 게 Generator를 이용해서 병렬 없는 귀속을 쓰고, Dome를 먼저 써보는 거예요.
function* gfunc (n) {  
  if (n < 10) yield n
  else return 0
  yield* gfunc(n+1)
}
var ddd = gfunc(7)
ddd.next()  // 7 
ddd.next() // 8 
ddd.next() // 9

비동기식 가입
function* gfunc (n) {
  n = yield (n => new Promise((resolve, reject) => {
      if (n) { //  next
        setTimeout(() => {
          resolve(n)
        }, 1000)
      }
    }))(n) 
  yield* gfunc(n)
}
var ddd = gfunc()
ddd.next()

ddd.next(7).value.then(n => console.info(n))  // 7
ddd.next(8).value.then(n => console.info(n))  // 8

병렬 처리
ddd.next(10).value.then(n => {
  console.info(n)
  ddd.next(11).value.then(n => {
    console.info(n)
    ...
  }}
})

정식 코드
//  
function wxUploadImage(wxLids) {
  var gfunc = myGfuncUpload()
  gfunc.next()
  let i = 0 
  function handleResult (success, fail) {
    //  localid( )
    gfunc.next(wxLids[i]).value.then(res => { 
      success(res) 
      i++
      handleResult(success, fail)
    }, fail)
  }
  return handleResult
} 
function* myGfuncUpload(wxLid) {
  //  
  wxLid = yield (item => new Promise((resolve, reject) => {
    if (item) {
      wx.uploadImage({
      localId: item, //  ID, chooseImage 
      isShowProgressTips: 1, //  1, 
      success: (res) => {
        if (res.errMsg == "uploadImage:ok") {
          resolve({wxSid: res.serverId, wxLid: item})
        } else
          reject ({err: res.errMsg, wxLid: item})
      }})
    }
  }))(wxLid)
  //  
  yield* myGfuncUpload(wxLid)
} 

호출
doHzfWxCheck()  //  
.then(() => wxChooseImage())  //  Promise
.then(wxLids => wxUploadImage(wxLids))
.then(e => e(({wxSid, wxLid}) => { 
    //  , wxSid , 
    console.info(' ,serverId: ', wxSid)
  }, ({err, wxLid}) => { 
    console.info(' , : ', err)
})) 

8.3 추가 애플릿 웹-view는 ios에서 지나가는 페이지는 모두 권한을 부여해야 최종 페이지가 권한을 부여받을 수 있다. 애플릿 웹-view 안드로이드에서 첫 번째 페이지는 권한 수여 페이지이다. 한 번 페이지를 새로 고쳐야 권한 수여에 성공할 수 있다. (직접 권한 수여를 두 번 해도 소용없다) 징그럽다. 징그럽다. 구덩이다. 더 이상 애플릿에 복잡한 h5를 끼워 넣지 마라. mpvue를 써도 좋고 원생도 좋다. 다시는 이렇게 하지 않겠다.
위챗 jsskdapi:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115백그라운드에서 위챗에 업로드된 사진을 다운로드하려면 다음과 같이 하십시오.https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1444738727

좋은 웹페이지 즐겨찾기