Coder Social home page Coder Social logo

sast-skill-docs's People

Contributors

a1phan avatar abmfy avatar andonade avatar ashitemaru avatar awxiaoxian2020 avatar blackcloud37 avatar c7w avatar comradez avatar ethkuil avatar flow2090 avatar lethe10137 avatar liang2kl avatar liangzhisama avatar livingshade avatar ljr040929 avatar prnake avatar qu-rance avatar rratic avatar somewheretofloat avatar unidy2002 avatar yfli03 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

sast-skill-docs's Issues

为 js 异步部分提一个例子

个人感觉在[引入 Promise 对象](https://docs.net9.org/languages/javascript/async/#promise)的时候跳跃比较大,我没能都明白

自己来写一点引入的内容,参考[廖雪峰的博客](https://www.liaoxuefeng.com/wiki/1022910821149312/1023024413276544)

Promise 对象的核心**是每一个异步任务返回一个 Promise 对象,该对象有一个 then 方法,允许指定回调函数。

我们先看一个最简单的 Promise 例子:生成一个 0~2 之间的随机数,如果小于 1,则等待一段时间后返回成功,否则返回失败:

function test(resolve, reject) {
    var timeOut = Math.random() * 2;
    log('set timeout to: ' + timeOut + ' seconds.');
    setTimeout(function () {
        if (timeOut < 1) {
            log('call resolve()...');
            resolve('200 OK');
        }
        // branch A
        else {
            log('call reject()...');
            reject('timeout in ' + timeOut + ' seconds.');
        }
        // branch B
    }, timeOut * 1000);
}

这个test()函数称为执行函数,具有有两个参数。

这两个参数都是函数,根据 timeout 方法,调用 resolve('200 OK') 或者调用 reject('timeout in ' + timeOut + ' seconds.')
可以看出,test() 函数只关心自身的逻辑,并不关心具体的 resolvereject 将如何处理结果。

有了执行函数,我们就可以用一个 Promise 对象来执行它,并在将来某个时刻获得成功或失败的结果:

var p1 = new Promise(test);
var p2 = p1.then(function (result) {
    console.log('success: ' + result);
});
var p3 = p2.catch(function (reason) {
    console.log('failed: ' + reason);
});

变量 p1 是一个 Promise 对象,它负责执行 test 函数。由于 test 函数在内部是异步执行的,当 test 函数进入 branch A 并且执行 resolve 语句时(或者说执行成功时),我们告诉 Promise 对象:

// if test enter branch A
p1.then(function (result) {
    console.log('right: ' + result);
});

test 函数进入 branch B 并且执行 reject 语句(也即执行失败)时,我们告诉 Promise 对象:

// if test enter branch B
p2.catch(function (reason) {
    console.log('wrong: ' + reason);
});

Promise 对象可以串联起来,所以上述代码可以简化为:

new Promise(test).then(function (result) {
    console.log('right: ' + result);
}).catch(function (reason) {
    console.log('wrong: ' + reason);
});

连在一起的话,就是这个样子:

new Promise(function (resolve, reject) {
    log('start new Promise...');
    var timeOut = Math.random() * 2;
    log('set timeout to: ' + timeOut + ' seconds.');
    setTimeout(function () {
        if (timeOut < 1) {
            log('call resolve()...');
            resolve('200 OK');
        }
        else {
            log('call reject()...');
            reject('timeout in ' + timeOut + ' seconds.');
        }
    }, timeOut * 1000);
}).then(function (r) {
    log('Done: ' + r);
}).catch(function (reason) {
    log('Failed: ' + reason);
});

可见Promise最大的好处是在异步执行的流程中,把执行代码和处理结果的代码清晰地分离了:

疑似错误

此处JavaScript似乎是TypeScript?
源自编程语言->TypeScript语言基础->TypeScript的函数
截屏2023-03-08 19 57 21

希望将课程指引从资源链接中独立出来

我认为docs9的一个重要价值在于能简洁地、高质量地、系统地、有针对性地为贵系学生提供基本知识与技能的引导,其中课程指引是最有需要、最能彰显价值主张的部分。同学们通过课程指引页面查阅需要了解的技能资料与文档,更好的完成课程内容并学习到不止于课程的知识。

在现在的页面引导下,资源链接排在各种专门技能/知识介绍的前面,其下包含课程指引、书目推荐与外部链接。从布局逻辑上,很难理解资源链接何以排在各种“干货”之前。从用户交互上,我每次打开网页都难以直观找到课程指引位于哪一部分。

建议将课程指引页面直接独立为一个tab,取代目前资源链接的部分,方便用户查阅。未来也可以在该页面下继续集成关于课程的针对性引导内容,可扩展性良好。

同时资源链接的tab可以移至最后,用来放置各类外部资源,如博客、网站、工具、书目推荐、视频课程等。

Python Update 2023

已经完成暑培python文档到skill docs文档的补充,可以直接访问我的仓库审核

使用 GitHub Actions 自动部署

手动部署过于繁琐,是否可以考虑使用 GitHub Actions 对 master 分支自动进行部署

name: deploy 
on:
  push:
    branches: 
      - master
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - uses: actions/setup-python@v2
        with:
          python-version: 3.x
      - run: pip install -r requirements.txt
      - run: mkdocs gh-deploy --force

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.